#include<iostream>
#include<queue>
using namespace std;
int INF=100000000;
int n, m;
int sx, sy;//起点终点坐标
int ex, ey;
char maze[100][100];
int d[100][100];
int dx[4] = { -1,0,1,0 }, dy[4] = { -1,0,1,0 };
typedef pair<int,int> P;
int bfs() {
queue<P> que;
que.push(P(sx, sy));
d[sx][sy] = 0;
while (que.size() != 0) {
P p = que.front();
que.pop();
if (p.first == ex && p.second == ey)
break;
for (int i = 0; i < 4; i++) {
int x = p.first + dx[i], y = p.second + dy[i];
if (0 <= x && x < n && 0 <= y && y < m&&d[x][y] == INF&&maze[x][y]!='#') {
que.push(P(x, y));
d[x][y] = d[p.first][p.second] + 1;
}
}
}
return d[ex][ey];
}
int main() {
cin >> n >> m;
cin >> sx >> sy >> ex >> ey;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> maze[i][j];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
d[i][j] = INF;
int res = bfs();
cout << res;
return 0;
}
bfs 迷宫问题
猜你喜欢
转载自blog.csdn.net/albert48/article/details/83450265
今日推荐
周排行