【模板】 并查集
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1 #include<bits/stdc++.h> 2 using namespace std; 3 int f[(int)1e4+7]; 4 int find(int k){ 5 if(f[k]==k) return k; 6 else return f[k]=find(f[k]); 7 } 8 int main(){ 9 int n,m;scanf("%d%d",&n,&m); 10 for(int i=1;i<=n;++i) f[i]=i; 11 for(int i=1;i<=m;++i){ 12 int a,b,c; 13 scanf("%d%d%d",&a,&b,&c); 14 switch (a){ 15 case 1:{ 16 f[find(b)]=find(c); 17 break; 18 } 19 case 2:{ 20 if(find(b)==find(c)) cout<<'Y'<<endl; 21 else cout<<'N'<<endl; 22 } 23 } 24 25 } 26 }