文章
3
粉丝
143
获赞
2
访问
21.2k
题解不仅面向了多个出口,对于多入多出也可以应用
典型的bfs解法,利用队列和判别条件入队出队
为了加速算法,讨论了无入口/无出口的情况,直接输出
代码略微麻烦的地方在于找不到路径的情况,反复用了break和continue,若有改进请各位大佬指点
#include<iostream>
#include<queue>
using namespace std;
typedef pair<int, int> PII;
const int N = 105;
int h, w;
int main()
{
cin.tie(0);
while (cin >> h >> w)
{
char s[N][N];
bool used[N][N];
int dis[N][N];
queue<PII> q;
bool have_s = false, have_e = false;
PII st, ed;
if (h == 0 && w == 0) break;
for (int i = 0; i < h; i++)
for (int j = 0; j < w; j++)
{
used[i][j] = false;
cin >> s[i][j];
dis[i][j] = -1;
if (s[i][j] == 'S')
{
q.push({ i, j });
used[i][j] = true;
dis[i][j] = 0;
have_s = true;
}
if (s[i][j] == 'E')
have_e = true;
}
if (!have_e || !have_s)
{
cout << -1 << endl;
continue;
}
bool suc = false;
int dx[4] = { -1, 0, 1, 0 };
in...
登录后发布评论
我想问下这里把queque改成stack为什么就不行呢?