本地能过,提交全错(BFS玄关)
查看原帖
本地能过,提交全错(BFS玄关)
1199534
ycy1124楼主2024/4/16 19:25
#include<bits/stdc++.h>
using namespace std;
queue<int>x,y,t;
bool bj=0;
int ans=0;
bool vis[1001][1001];
char a[1001][1001];
int x2,y2;
int n;
int p1[4]={0,0,1,-1},p2[4]={1,-1,0,0};
void bfs(int x1,int y1,int t1)
{
	if(x1==x2&&y1==y2)
	{
		ans=t1;
		bj=1;
	}
	for(int i=0;i<=3;i++)
	{
		if(x1+p1[i]>=1&&x1+p1[i]<=n&&y1+p2[i]>=1&&y1+p2[i]<=n)
		{
			if(a[x1+p1[i]][y1+p2[i]]=='0'&&!vis[x1+p1[i]][y1+p2[i]])
			{
				vis[x1+p1[i]][y1+p2[i]]=1;
				x.push(x1+p1[i]);
				y.push(y1+p2[i]);
				t.push(t1+1);
			}
		}
	}
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		for(int j=1;j<=n;j++)
		{
			a[i][j]=getchar();
		}
		getchar();
	}
	int x1,y1;
	cin>>x1>>y1>>x2>>y2;
	x.push(x1);
	y.push(y1);
	t.push(0);
	while(!x.empty()&&!bj)
	{
		bfs(x.front(),y.front(),t.front());
		x.pop();
		y.pop();
		t.pop();
	}
	cout<<ans;
	return 0;
}
2024/4/16 19:25
加载中...