3个wa,70分,求助大神 :(
查看原帖
3个wa,70分,求助大神 :(
1227031
ARTI001楼主2024/1/13 10:53
#include<iostream>
#include<cstdio>
#include<queue>
using namespace std;

struct node
{
	int x[10005],y[10005];
};
struct pos
{
	int x,y,count;
}top;

int dx[]={0,0,1,-1},dy[]={1,-1,0,0};

int n,m,a,b;
int map[505][505];
node orig,fi;
int store[505][505];
queue <pos>q;

int main()
{
	scanf("%d%d%d%d",&n,&m,&a,&b);
	for(int i=0;i<a;i++)
	{
		scanf("%d%d",&orig.x[i],&orig.y[i]);
		q.push((pos){orig.x[i],orig.y[i],0});
		store[orig.x[i]][orig.y[i]]=-1;
	}
	for(int i=0;i<b;i++)
	{
		scanf("%d%d",&fi.x[i],&fi.y[i]);
	}
	while(!q.empty())
	{
		top=q.front(); 
		q.pop();
		
		for(int i=0;i<4;i++)
		{
			int nx=top.x+dx[i];
			int ny=top.y+dy[i];
			if(store[nx][ny]==0&&nx>=1&&nx<=n&&ny>=1&&ny<=m)
			{
				q.push((pos){nx,ny,top.count+1});
				store[nx][ny]=top.count+1;
			}
		}
	}
	for(int i=0;i<b;i++)
	{
		if(store[fi.x[i]][fi.y[i]]==-1)printf("0\n");
		else printf("%d\n",store[fi.x[i]][fi.y[i]]);
	}
	return 0;
}
2024/1/13 10:53
加载中...