LaoWang fail
周测题目,一道bfs 模板,不过刚开始写时忘了把地图输进去。。
#include<stdio.h> #include<string.h> #include<queue> #include<algorithm> using namespace std; int ex,ey,dx,i,dy,vis[10][10]; int map[9][9]={0,0,1,1,1,1,1,1,1,1,0,0,1,0,0,1,0,1,1,0,0,1,1,0,0,0,1,1,0,1,0,1,1,0,1,1, 1,0,0,0,0,1,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,1,0,0,1,1,1,0,1,0,0,0,0,1, 0,1,1,1,1,1,1,0,0}; struct node { int x; int y; int num; }t[11000]; bool init(int x,int y) { if(x<0||y<0||x>=8||y>=8||map[x][y]==1) return false; return true; } int dis[][2]={{0,1},{0,-1},{1,0},{-1,0}}; int bfs() { memset(vis,-1,sizeof(vis)); queue<node>q; vis[ex][ey]=0; node f={ex,ey,0}; q.push(f); while(!q.empty()) { node temp=q.front(); q.pop(); if(temp.x==dx&&temp.y==dy) { return temp.num; } for(i=0;i<4;i++) { int sx=temp.x+dis[i][0]; int sy=temp.y+dis[i][1]; if(init(sx,sy)&&vis[sx][sy]) { vis[sx][sy]=0; node tmp={sx,sy,temp.num+1}; q.push(tmp); } } } return -1; } int main() { int p; scanf("%d",&p); while(p--) { scanf("%d%d%d%d",&ex,&ey,&dx,&dy); if(bfs()==-1) printf("LongWang fail\n"); else printf("%d\n",bfs()); } }