2,3,9,10WA怎么回事
查看原帖
2,3,9,10WA怎么回事
544113
不慕放糖楼主2021/8/18 10:10
#include<bits/stdc++.h>
using namespace std;
int m,n,a,b;
int mp[500][505],x,y;
int sx[100005][3];
int xx[4]={1,0,0,-1};
int yy[4]={0,-1,1,0};
bool vis[505][505];
struct node{
	int x,y,step;
}; 
queue<node>q;
void p(int c,int d){
vis[x][y] =1;
	q.push(node{x,y,0});
	
	return;
}
	
int main(){
	memset(vis,false,sizeof(vis));
	cin>>n>>m>>a>>b;
	for(int i=1;i<=a;i++){
		cin>>x>>y;	
		p(x,y);
	}
	for(int i=1;i<=b;i++){
         cin>>sx[i][1]>>sx[i][2];
	} 
	while(!q.empty()){
	  node t;
		for(int i=0;i<4;i++){
		    t=q.front();
			int dx=t.x+xx[i];
			int dy=t.y+yy[i];
			if(dx>=1&&dx<=n&&dy>=1&&dy<=m&&!vis[dx][dy]){
				vis[dx][dy]=true;
				q.push(node{dx,dy,t.step+1});
			}
		}
		
		mp[t.x][t.y]=t.step;
		q.pop();
	}
	for(int i=1;i<=b;i++){
		cout<<mp[sx[i][1]][sx[i][2]]<<endl;
	}
}
2021/8/18 10:10
加载中...