1252:走迷宫
思路和 Dungeon Master 一致。
1 #include<iostream> 2 #include<cstdio> 3 #include<queue> 4 using namespace std; 5 6 const int N=45; 7 char a[N][N]; 8 int r,c,b[N][N],t[]={1,0,-1,0,0,1,0,-1}; 9 queue<int> q; 10 11 void bfs(){ 12 while(!q.empty()){ 13 int x=q.front(); 14 q.pop(); 15 int y=q.front(); 16 q.pop(); 17 for(int i=0;i<4;i++){ 18 int nx=x+t[i],ny=y+t[i+4]; 19 if(nx>0&&nx<=r&&ny>0&&ny<=c&&a[nx][ny]=='.'&&(!b[nx][ny]||b[nx][ny]>b[x][y]+1)){ 20 q.push(nx),q.push(ny); 21 b[nx][ny]=b[x][y]+1; 22 } 23 } 24 } 25 } 26 int main(){ 27 cin>>r>>c; 28 getchar(); 29 for(int i=1;i<=r;i++){ 30 for(int j=1;j<=c;j++) 31 scanf("%c",&a[i][j]); 32 getchar(); 33 } 34 b[1][1]=1; 35 q.push(1),q.push(1); 36 bfs(); 37 printf("%d\n",b[r][c]); 38 return 0; 39 }