文章

3

粉丝

143

获赞

2

访问

21.4k

头像
典型bfs
推荐阅读

题解不仅面向了多个出口,对于多入多出也可以应用

典型的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...
登录查看完整内容


登录后发布评论

1 条评论
Gejiao
2024年3月23日 14:35

我想问下这里把queque改成stack为什么就不行呢?

赞(0)