P1551 亲戚

P1551 亲戚

简介

一道很水的并查集,就是模板

题目

规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚也都是x的亲戚。

思路

用并查集,不断输入的同时不断unite(联系)

代码

#include <bits/stdc++.h>
#define N 5050
using namespace std;
typedef long long ll;
ll n,m,p,id[N],x,y;
ll find(ll x){
	return id[x]==x?x:id[x]=find(id[x]);
}
void unite(ll x,ll y){
	ll xi=find(x),yi=find(y);
	id[xi]=yi;
}	
int main(){
	cin>>n>>m>>p;
	for(ll i=0;i<n;i++)id[i]=i;
	for(int i=1;i<=m;i++){
		cin>>x>>y;
		unite(x,y);
	}
	for(int i=1;i<=p;i++){
		cin>>x>>y;
		if(find(x)==find(y)) cout<<"Yes"<<endl;
		else cout<<"No"<<endl;
	}
	return 0;
}
posted @ 2020-11-26 22:35  HATU  阅读(195)  评论(0编辑  收藏  举报