【模板】并查集
题目
亲戚(家族相同)
【模板】并查集(ybtoj【模板】并查集相同)
解析
并查集入门题,注意范围就行
四倍经验
code(亲戚&&家族):
#include<iostream>
using namespace std;
int n,m,a[50001],x,y,z;
int find(int who)
{
if(a[who]==who)return who;
else return a[who]=find(a[who]);
}
int main()
{
cin>>n>>m>>z;
for(int i=1;i<=n;i++)a[i]=i;
for(int i=1;i<=m;i++)
{
cin>>x>>y;
a[find(x)]=find(y);
}
for(int i=1;i<=z;i++)
{
cin>>x>>y;
if(find(x)==find(y))cout<<"Yes";
else cout<<"No";
cout<<endl;
}
return 0;
}
code(【模板】并查集):
#include<iostream>
using namespace std;
int n,m,a[10001],x,y,z;
int find(int who)
{
if(a[who]==who)return who;
else return a[who]=find(a[who]);
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++)a[i]=i;
for(int i=1;i<=m;i++)
{
cin>>x>>y>>z;
if(x==1)a[find(z)]=find(y);
else
{
if(find(y)==find(z))cout<<'Y';
else cout<<'N';
cout<<endl;
}
}
return 0;
}