ACM-ICPC Jiaozuo Onsite 2018 Honeycomb【bfs】

题意:其实就是迷宫直接跑就行了,原本还想把迷宫转换一下想麻烦了。。

#include
using namespace std;
const int INF =100000000;
char mp[10000][10000];
int d[10][2]={4,0,-4,0,-2,-6,-2,6,2,-6,2,6};
int n,m;
typedef pairP;
int sx,sy,gx,gy;int w[10000][10000];
int bfs()
{
	queue

que; for(int i=0;i<=4*n+3;i++) { for(int j=0;j<=4+(m-1)*6;j++) { w[i][j]=INF; } } que.push(P(sx,sy)) ; w[sx][sy]=0;int ok=0; while(que.size()) { P p=que.front();que.pop(); int wx=p.first,wy=p.second; for(int i=0;i<6;i++) { int nx=p.first+d[i][0],ny=p.second+d[i][1]; if(0<=nx&&nx<4*n+3&&ny>=0&&ny<=4+(m-1)*6&&(nx+p.first)/2>=0&&(ny+p.second)/2>=0&&mp[(nx+p.first)/2][(ny+p.second)/2]==' '&&w[nx][ny]==INF) { que.push(P(nx,ny)); w[nx][ny]=w[p.first][p.second]+1; if(nx==gx&&ny==gy) { ok=1; break; } } } if(ok==1) break; } return w[gx][gy]; } int main() { int t; cin>>t; while(t--) { cin>>n>>m; getchar(); for(int i=0;i<4*n+3;i++) { gets(mp[i]); } for(int i=0,k=2;i

 

你可能感兴趣的:(bfs)