并查集

亲戚(数据加强)

#include<bits/stdc++.h>
using namespace std;
int parent[500001];
int n,m,p;
int find(int x)//查
{
	if(parent[x]==x) return x;
	else{
		parent[x]=find(parent[x]);
		return parent[x];
	}
}
void merge(int i,int j)//并
{
	parent[find(j)]=find(i);
}
int main()
{
	scanf("%d%d%d",&n,&m,&p);
	for(int i=1;i<=n;i++){
		parent[i]=i;
	}
	for(int i=1;i<=m;i++){
		int mi,mj;
		scanf("%d%d",&mi,&mj);
		merge(mi,mj);
	}
	for(int i=1;i<=p;i++){
		int pi,pj;
		scanf("%d%d",&pi,&pj);
		if(find(pi)==find(pj)) printf("Yes\n");
		else printf("No\n");
	}
	return 0;
}
posted @ 2023-08-04 15:47  黄浠锐  阅读(5)  评论(0)    收藏  举报