现在的位置: 首页 > 综合 > 正文

【wikioi1537】血色先锋队

2018年04月25日 ⁄ 综合 ⁄ 共 710字 ⁄ 字号 评论关闭
#include<iostream>
#include<cstdio>
#include<cstring>
#include<utility>
#include<queue>
using namespace std;
int n,m,a,b,t=0,w=1,map[501][501];
const int xi[4]={-1,0,1,0},yi[4]={0,-1,0,1};
queue<pair<int,int> > q;
void bfs(){
	while(!q.empty()){
		for(int i=0;i<=3;i++){
			int nowx=q.front().first+xi[i],
				nowy=q.front().second+yi[i],
				t=map[q.front().first][q.front().second];
			if(map[nowx][nowy]!=-1||nowx<1||nowy<1||nowx>n||nowy>m)continue;
			map[nowx][nowy]=t+1;
			q.push(make_pair(nowx,nowy));
		}
		q.pop();
	}
}
int main(){
	scanf("%d%d%d%d",&n,&m,&a,&b);
	memset(map,-1,sizeof(map));
	for(int i=1;i<=a;i++){
		int x,y;scanf("%d%d",&x,&y);
		map[x][y]=0;
		q.push(make_pair(x,y));
	}
	bfs();
	for(int i=1;i<=b;i++){
		int x,y;scanf("%d%d",&x,&y);
		printf("%d\n",map[x][y]);
	}
	
	return 0;
}

抱歉!评论已关闭.