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 }

 

posted @ 2021-08-13 18:08  Rekord  阅读(247)  评论(0编辑  收藏  举报