社区讨论

悬关求条60pts

P1332血色先锋队参与者 1已保存回复 1

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
1 条
当前快照
1 份
快照标识符
@mieqfo89
此快照首次捕获于
2025/11/25 23:30
3 个月前
此快照最后确认于
2025/11/26 09:44
3 个月前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
const int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
queue<int> qx,qy;
int n,m,a,b,ans=0,anss[505][505];
bool vis[505][505],k[505][505];
int main(){
	cin>>n>>m>>a>>b;
	int x,y;
	for(int i=0;i<a;i++){
		cin>>x>>y;
		qx.push(x-1);
		qy.push(y-1);
	}
	int mx[100005],my[100005];
	for(int i=0;i<b;i++){
		cin>>mx[i]>>my[i];
		k[mx[i]-1][my[i]-1]=true;
	}
	int sum=0,sum1=a,p=0;
	while(qx.size()>0){
		vis[qx.front()][qy.front()]=true;
		if(p==sum1){
		    sum1=sum;
		    sum=0;
		    p=0;
		    ans++;
		}
		if(k[qx.front()][qy.front()]==true){
			anss[qx.front()][qy.front()]=ans;
		}
		for(int i=0;i<4;i++){
			int xx=dx[i]+qx.front(),yy=dy[i]+qy.front();
			if(0<=xx&&xx<n&&0<=yy&&yy<m&&vis[xx][yy]==false){
				qx.push(xx);
				qy.push(yy);
				sum++;
				vis[xx][yy]=true;
			}
		}
		p++;
		qx.pop();
		qy.pop();
	}
	for(int i=0;i<b;i++){
		cout<<anss[mx[i]-1][my[i]-1]<<endl;
	}
	return 0;
}
错#1#2#5#8....

回复

1 条回复,欢迎继续交流。

正在加载回复...