日常迷惑MLE
查看原帖
日常迷惑MLE
299996
萧笙楼主2020/12/5 21:45

这次加了TLE (quq555~~)

#include<iostream>
#include<cstdio>
#include<string>
#include<queue>
#define in inline
#define re register
using namespace std;
const int dx[4]={0,0,-1,1};
const int dy[4]={1,-1,0,0};
struct node{
	int x,y,step;
};
int n,x1,x2,y1,y2,ans;
bool map[1002][1002];
queue<node>q;
string str;
in void bfs()
{
	node now,next;
	now.x=x1,now.y=y1,now.step=0;
	q.push(now);
	while(!q.empty())
	{
		now=q.front();
		q.pop();
		int x=now.x,y=now.y,t=now.step;
		if(x==x2&&y==y2)	
		{ans=t;break;}
		map[x][y]=true;
		for(re int i=0;i<=3;i++)
		{
			int xx=now.x+dx[i];
			int yy=now.y+dy[i];
			if(xx>=1&&xx<=n&&yy>=1&&yy<=n&&!map[xx][yy])
			{
				next.x=xx;
				next.y=yy;
				next.step=t+1;
				q.push(next);
			}
		}
	}
	return;
}
int main()
{
	scanf("%d",&n);
	for(re int i=1;i<=n;i++)
	{
		cin>>str;
		int len=str.length();
		for(int j=0;j<len;j++)
			map[i][j+1]=str[j]==48?false:true;
	}
	scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
	bfs();
	printf("%d",ans);		
	return 0;
}
2020/12/5 21:45
加载中...