洛谷(LG)P1551 亲戚

https://www.luogu.org/problemnew/show/P1551

就是一道裸的并查集的题目

注意一下小细节,在输出“Yes”  or  “No”  的时候,不要忘了 “\n” 或者 endl 换行,不然,一首凉凉送给大家;

不太会的话https://www.cnblogs.com/--nice--/p/10403284.html看并查集模板的讲解

#include <algorithm>
#include <iostream>
#include <cstdio>
#include <cmath>
using namespace std;
int n,m,p,f[5005];
int fa(int i){return f[i]==i?i:fa(f[i]);}  //  并查集的查询和路径压缩的必要步骤(没有路径压缩就会看到一篇 TLE 的壮观景象)
int main(){
scanf("%d%d%d",&n,&m,&p);
for(int i=1;i<=n;++i)f[i]=i;
for(int i=0;i<m;++i){
int x,y;
scanf("%d%d",&x,&y);
if(fa(f[x])!=fa(f[y]))
f[fa(f[x])]=fa(f[y]);
}
for(int i=0;i<p;++i){
int x,y;
scanf("%d%d",&x,&y);
if(fa(f[x])==fa(f[y]))
printf("Yes\n");
else
printf("No\n");
}
return 0;
}

猜你喜欢

转载自www.cnblogs.com/--nice--/p/10403310.html