# 并查集模板
#include <bits/stdc++.h>
using namespace std;
const int N=10001;
int fa[N],n,m;
int find(int x)
{
if(fa[x]==x)
return x;
fa[x]=find(fa[x]);
return fa[x];
}
void hb(int a,int b)
{
int faa=find(a),fab=find(b);
if(faa!=fab)
fa[fab]=faa;
return;
}
int main()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
fa[i]=i;
for(int i=1;i<=m;i++)
{
int op,x,y;
scanf("%d %d %d",&op,&x,&y);
if(op==1)
hb(x,y);
else
{
int faa=find(x),fab=find(y);
if(faa==fab)
printf("Y\n");
else
printf("N\n");
}
}
return 0;
}
例题:
并查集 (模板)