求助
查看原帖
求助
773155
Elliott19楼主2023/3/18 13:58
#include<bits/stdc++.h>
using namespace std;
int sum;
struct node
{
	int x,y,step;
};
queue<node>q;
int f[2100][2100],next[5]={1,-1,1,-1},n;
char a[2100][2100];
int bfs(int x,int y,int x2,int y2)
{
	q.push((node){x,y,0});
	while(!q.empty())
	{
		node u=q.front();
		q.pop();
		int newx=u.x+1;
		if(newx==x2&&u.y==y2) return u.step+1;
		if(newx<=n&&f[newx][u.y]==0)
		{
			f[newx][u.y]=u.step+1;
			q.push((node){newx,u.y,f[newx][u.y]});
		}
		newx=u.x-1;
		if(newx==x2&&u.y==y2) return u.step+1;
		if(newx>=1&&f[newx][u.y]==0)
		{
			f[newx][u.y]=u.step+1;
			q.push((node){newx,u.y,f[newx][u.y]});
		}
		int newy=u.y+1;
		if(u.x==x2&&newy==y2) return u.step+1;
		if(newy<=n&&f[u.x][newy]==0)
		{
			f[u.x][newy]=u.step+1;
			q.push((node){u.x,newy,f[u.x][newy]});
		}
		newy=u.y-1;
		if(u.x==x2&&newy==y2) return u.step+1;
		if(u.x>=1&&f[u.x][newy]==0)
		{
			f[u.x][newy]=u.step+1;
			q.push((node){u.x,newy,f[u.x][newy]});
		}
	}
}
int main()
{
	int x,y,x2,y2;
	cin>>n;
	for(int i=1;i<=n;i++)
		for(int j=1;j<=n;j++)
			cin>>a[i][j];
	cin>>x>>y>>x2>>y2;
	cout<<bfs(x,y,x2,y2);
	return 0;
}	

80分,#3,#8wa

2023/3/18 13:58
加载中...