MLE了,蒟蒻求助(已看其他的MLE,问题不一样)
查看原帖
MLE了,蒟蒻求助(已看其他的MLE,问题不一样)
485326
lao_da_ye楼主2022/11/8 21:20
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<queue>
using namespace std;

struct se
{
	int x;
	int y;
	int step;
};

int n,ans;
int sx,sy,ex,ey;
string mp[1010];
int pd[1010][1010];
int fx[5]={0,-1,0,1,0};
int fy[5]={0,0,-1,0,1};
queue<se> q;

int bfs(int hx,int hy)
{
	pd[hx][hy]=1;
	q.push({hx,hy,0});
	while(!q.empty())
	{
		int Nowx=q.front().x;
		int Nowy=q.front().y;
		int Nowstep=q.front().step;
		q.pop();
		if(Nowx==ex&&Nowy==ey)
		{
			return Nowstep;
		}
		for(int i=1;i<=4;i++)
		{
			if(Nowx+fx[i]>=0
			   &&Nowy+fy[i]>=0
			   &&Nowx+fx[i]<n
			   &&Nowy+fx[i]<n
			   &&mp[Nowx+fx[i]][Nowy+fy[i]]=='0'
			   &&pd[Nowx+fx[i]][Nowy+fy[i]]==0)
			   {
			   	q.push({Nowx+fx[i],Nowy+fy[i],Nowstep+1});
			   	pd[Nowx+fx[i]][Nowx+fy[i]]=1;
			   }
		}
	}
}

int main()
{
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cin>>mp[i];
	}
	cin>>sx>>sy>>ex>>ey;
	ex--;
	ey--;
	ans=bfs(sx-1,sy-1);
	cout<<ans<<endl;
	return 0;
} 
2022/11/8 21:20
加载中...