为甚40???????
查看原帖
为甚40???????
1087894
Wyz110628楼主2023/10/28 09:28
#include<bits/stdc++.h>
using namespace std;
int n,m,a,b,d[10001][3],wz[10001][2],ans[10001];
bool bz[501][501];
int dx[5]={0,1,-1,0,0},dy[5]={0,0,0,1,-1};
void hs(int x,int y,int tail)
{
	for(int i=1;i<=b;i++)
	{
		if(x==wz[i][0] && y==wz[i][1])
		{
			ans[i]=d[tail][0];
			return;
		}
	}
}
void bfs()
{
	int head=0,tail=a;
	while(head<tail)
	{
		head++;
		for(int i=1;i<=4;i++)
		{
			int xx=d[head][1]+dx[i];
			int yy=d[head][2]+dy[i];
			if(xx>0 && yy>0 && xx<=n && yy<=m && bz[xx][yy]==0)
			{
				tail++;
				bz[xx][yy]=1;
				d[tail][0]=d[head][0]+1;
				d[tail][1]=xx;
				d[tail][2]=yy;
				hs(xx,yy,tail);
			}
		}
	}
}
int main()
{
	cin>>n>>m>>a>>b;
	for(int i=1;i<=a;i++)
	{
		d[i][0]=0;
		cin>>d[i][1]>>d[i][2];
		bz[d[i][1]][d[i][2]]=1;
	}
	for(int i=1;i<=b;i++)
	{
		cin>>wz[i][0]>>wz[i][1];
	}
	bfs();
	for(int i=1;i<=b;i++)
	{
		cout<<ans[i]<<endl;
	}
}

为毛40啊,有没有人帮我看一下

肯定是我太FW了

2023/10/28 09:28
加载中...