代码求助!
  • 板块学术版
  • 楼主theb0t
  • 当前回复6
  • 已保存回复6
  • 发布时间2023/8/1 16:52
  • 上次更新2023/11/3 06:31:49
查看原帖
代码求助!
997236
theb0t楼主2023/8/1 16:52

原题链接

大佬求助,这段BFS代码哪里错了?

#include <cstdio>
#include <queue>
using namespace std;

struct node
{
	int x;
	int y;
};
queue<node> q;
char mp[1005][1005];
int n,sx,sy,ex,ey;
int dis[4][2]={{0,1},{0,-1},{1,0},{-1,0}},vis[1005][1005];
void bfs(int x,int y)
{

	while(q.size())
	{ 
		node t=q.front();
		q.pop();
		if(t.x==ex&&t.y==ey)
			printf("%d\n",vis[ex][ey]);
		for(int i=0;i<4;i++)
		{
			int fx=t.x+dis[i][0];
			int fy=t.y+dis[i][1];
			if(fx>=1&&fx<=n&&fy>=1&&fy<=n&&!vis[fx][fy]&&mp[fx][fy]=='0')
			{
				vis[fx][fy]=vis[t.x][t.y]++;
				q.push({fx,fy});
			}
		}
	}
}
int main()
{
	
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
			scanf("%c",&mp[i][j]);
		getchar();
	}
	scanf("%d%d%d%d",&sx,&sy,&ex,&ey);
	q.push({sx,sy});
	bfs(sx,sy);
	return 0;
}
2023/8/1 16:52
加载中...