#include<iostream> #include<queue> using namespace std; int R,C; char maze[45][45]; int dist[45][45]; int dx[4]={-1,0,1,0}; int dy[4]={0,1,0,-1}; int bfs(){ queue<pair<int,int>> q; q.push({1,1}); dist[1][1]=1; while(!q.empty()){ auto [x,y]=q.front();q.pop(); if(x==R&&y==C)return dist[x][y]; for(int i=0;i<4;i++){ int nx=x+dx[i],ny=y+dy[i]; if(nx>=1&&nx<=R&&ny>=1&&ny<=C&&maze[nx][ny]=='.'&&!dist[nx][ny]){ dist[nx][ny]=dist[x][y]+1; q.push({nx,ny}); } } } return -1; } int main(){ cin>>R>>C; for(int i=1;i<=R;i++) for(int j=1;j<=C;j++) cin>>maze[i][j]; cout<<bfs(); return 0; } /************************************************************** Problem: 1432 User: zhengzihao Language: C++ Result: Accepted Time:29 ms Memory:2088 kb ****************************************************************/