P1332由于未知原因(并未在讨论版及提交记录发现)WA后两个点
查看原帖
P1332由于未知原因(并未在讨论版及提交记录发现)WA后两个点
84473
铁锤楼主2020/6/17 21:18

这是代码


#include<cstdio>
#include<queue>
using namespace std;

struct Node {
	int x,y;
}node[100010];
int dx[4]={0,1,0,-1};
int dy[4]={1,0,-1,0};
int cnt;
int a,b;
queue<int> q;
int n,m;
int dfn[510][510];
int vis[510][510];
bool avlb(int x,int y) {
	if(x<1||y<1||x>n||y>m||vis[x][y])
		return 0;
	return 1;
}
int main() {
	scanf("%d%d%d%d",&n,&m,&a,&b);
	int x,y;
	for(int i=1;i<=a;i++) {
		scanf("%d%d",&x,&y);
		node[++cnt].x=x;
		node[cnt].y=y;
		q.push(cnt);
		dfn[node[cnt].x][node[cnt].y]=0;
		vis[node[cnt].x][node[cnt].y]=1;
	}
	while(!q.empty()) {
		int now=q.front();
		q.pop();
		for(int i=0;i<4;i++) {
			int tox=node[now].x+dx[i];
			int toy=node[now].y+dy[i];
			if(avlb(tox,toy)) {
				node[++cnt].x=tox;
				node[cnt].y=toy;
				dfn[tox][toy]=dfn[node[now].x][node[now].y]+1;
				vis[tox][toy]=1;
				q.push(cnt);
			}
		}
	}
	for(int i=1;i<=b;i++) {
		scanf("%d%d",&x,&y);
		printf("%d\n",dfn[x][y]);
	}
	return 0;
}

提交记录

2020/6/17 21:18
加载中...