为什么爆了
查看原帖
为什么爆了
700478
ZHOUJIECHEN楼主2023/6/3 21:22
using namespace std;
struct c{
	int x,y,z; 
};
queue<c> q;
int mm[555][555];
int ans[100006];
int walk[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int main()
{
	int n,m,a,b,aa,bb;
	cin>>n>>m>>a>>b;
	for(int i=1;i<=a;i++)
	{
		cin>>aa>>bb;
		c tmp={aa,bb,0};
		q.push(tmp);
	}
	for(int i=1;i<=b;i++)
	{
		cin>>aa>>bb;
		if(mm[aa][bb]!=0)
		{
			ans[i]=mm[aa][bb];
			continue;
		}
		while(!q.empty())
		{
			int ux=q.front().x;
			int uy=q.front().y;
			int uz=q.front().z;
			q.pop();
					if(mm[ux+1][uy]==0)
					{
						c tmp={ux+1,uy,uz+1};
						q.push(tmp);
						mm[ux+1][uy]=uz+1;
					}
					if(mm[ux-1][uy]==0)
					{
						c tmp={ux-1,uy,uz+1};
						q.push(tmp);
						mm[ux-1][uy]=uz+1;
					}
					if(mm[ux][uy+1]==0)
					{
						c tmp={ux,uy+1,uz+1};
						q.push(tmp);
						mm[ux][uy+1]=uz+1;
					}
					if(mm[ux][uy-1]==0)
					{
						c tmp={ux,uy-1,uz+1};
						q.push(tmp);
						mm[ux][uy-1]=uz+1;
					}
					if(mm[aa][bb]!=0)
					{
						ans[i]=mm[aa][bb];
						break;
					}
		}
		for(int i=1;i<=b;i++)
		{
			cout<<ans[i]<<endl;
		}
	}
}```
2023/6/3 21:22
加载中...