模板题–洛谷P3367
代码
#include<bits/stdc++.h>
using namespace std;
const int MAXN=(int)1e4+10;
int pre[MAXN];
int find(int x);
void merge(int x,int y);
int main()
{
int n,m;
cin>>n>>m;
for (int i=1;i<=n;i++) {
pre[i]=i;
}
while (m--) {
int z,x,y;
scanf("%d%d%d",&z,&x,&y);
if (z==1) {
merge(x,y);
} else {
int fx=find(x),fy=find(y);
printf("%c\n","NY"[fx==fy]);
}
}
return 0;
}
int find(int x)
{
return x==pre[x] ? x : pre[x]=find(pre[x]);
}
void merge(int x,int y)
{
pre[find(x)]=find(y);
}