AcWing 844. 走迷宫
原题链接
简单
#include <bits/stdc++.h>
using namespace std;
int n , m;
char g[110][110];
bool vis[110][110];
int dis[110][110];
pair<int , int> d[4] = {{1 , 0} , {0 , 1} , {-1 , 0 } ,{0 , -1}};
struct node{
int a , b;
};
int bfs(int x1 , int y1 , int x2 , int y2)
{
node s = {x1 , y1};
dis[x1][y1] = 0;
queue<node> q;
q.push(s);
while(!q.empty())
{
node u = q.front();
q.pop();
for(int i = 0 ; i < 4 ; i++)
{
node ne = {u.a + d[i].first , u.b + d[i].second};
if(!vis[ne.a][ne.b] && ne.a >= 0 && ne.a < n && ne.b >= 0 && ne.b < m && g[ne.a][ne.b] != '1')
{
vis[ne.a][ne.b] = true;
q.push(ne);
dis[ne.a][ne.b] = dis[u.a][u.b] + 1;
}
}
}
}
int main()
{
cin >> n >> m;
//init
for(int i = 0 ; i < n ; i++)
{
for(int j = 0 ; j < m ; j++) cin >> g[i][j];
}
bfs(0,0,n-1, m-1);
cout << dis[n-1][m-1];
return 0;
}