蒟蒻求助!!
查看原帖
蒟蒻求助!!
321647
阿炜楼主2022/11/1 19:06

找着板子写的,全挂了,我不李姐

#include<iostream>
#include<queue>
using namespace std;
int dx[]={-1,0,0,1};
int dy[]={0,-1,1,0};
struct Pos
{
	int x,y;
};
queue <Pos> q;
bool vis [1010][1010];
int a[1010][1010];
int dis[1010][1010];
int n;
int x,y,xx,yy,xxx,yyy;
int bfs(int ax,int ay)
{
	q.push((Pos{ax,ay}));
	vis[ax][ay]=true;
	while(!q.empty())
	{
		x=q.front().x;
		y=q.front().y;
		q.pop();
		if(x==xxx&&y==yyy) return dis[x][y];
		for(int i=0;i<4;i++)
		{
			int tx=x+dx[i];
			int ty=y+dy[i];
			if(tx>n||ty>n||tx<=0||ty<=0) continue ;
			if(a[tx][ty]==1||vis[tx][ty]==true) continue ;
			vis[tx][ty]=true;
			dis[tx][ty]=dis[x][y]+1;
			q.push((Pos){tx,ty});
		}
	}
	return -1;
}
int main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	for(int j=1;j<=n;j++)
	{
		cin>>a[i][j];
	}
	cin>>xx>>yy>>xxx>>yyy;
	cout<<bfs(xx,yy);
	return 0;
}
2022/11/1 19:06
加载中...