萌新求助
查看原帖
萌新求助
222057
joy2010WonderMaker楼主2021/10/22 20:23

这个并查集只会输出No了……

#include<bits/stdc++.h>
using namespace std;
int n,m,p,x,y,f[5005];
int find(int x){
	if(f[x]==x)
		return x;
	return f[x]=find(f[x]);
}
void merge(int x,int y){
	int fx=find(x),fy=find(y);
	f[fy]=fx;
}
int main(){
	//freopen("P1551.in","r",stdin);
	//freopen("P1551.out","w",stdout);
	scanf("%d%d%d",&n,&m,&p);
	for(int i=1;i<=m;i++){
		scanf("%d%d",&x,&y);
		merge(x,y);
	}
	for(int i=1;i<=n;i++)
		f[i]=i;
	for(int i=1;i<=p;i++){
		scanf("%d%d",&x,&y);
		puts(find(x)==find(y)?"Yes":"No");
	}
	return 0;
}
2021/10/22 20:23
加载中...