【模板】并查集

【模板】并查集

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include<bits/stdc++.h>
using namespace std;
int z,x,y,n,m,f[10010];
int find(int k) { //查集
if(f[k]==k)return k;
return f[k]=find(f[k]);
}
int main() {
cin>>n>>m;
for(int i=1; i<=n; i++)f[i]=i;
for(int i=1; i<=m; i++) {
cin>>z>>x>>y;
if(z==1) { //并集
f[find(x)]=find(y);
}
if(z==2) { //查集
if(find(x)==find(y))
cout<<"Y"<<endl;
else
cout<<"N"<<endl;
}
}
return 0;
}