【玄关】C++0ps求助
查看原帖
【玄关】C++0ps求助
1069258
Drunk_tammy楼主2024/4/7 15:35
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int n,m,a,b,u[MAXN][3],v[MAXN][3],ans[505][505] = {0};
int ux[4] = {-1,0,1,0},uy[4] = {0,1,0,-1};
bool vis[505][505] = {false};
void dfs(int x,int y,int cnt){
	vis[x][y] = true,ans[x][y] = cnt;
	for(int i = 0;i < 4;i++)
	{
		int zx = x + ux[i],zy = y + uy[i];
		if(zx <= n && zy <= m && zx > 0 && zy > 0 &&
		 !vis[zx][zy] && (ans[zx][zy] > cnt + 1 || ans[zx][zy] == 0)) dfs(zx,zy,cnt + 1);
	}
	return;
}
int main(){
	cin >> n >> m >> a >> b;
	for(int i = 1;i <= a;i++) cin >> u[i][1] >> u[i][2];
	for(int i = 1;i <= b;i++) cin >> v[i][1] >> v[i][2];
	for(int i = 1;i <= a;i++) dfs(u[i][1],u[i][2],0);
	for(int i = 1;i <= b;i++) cout << ans[v[i][1]][v[i][2]] << endl; 
} 
2024/4/7 15:35
加载中...