#include<bits/stdc++.h>
using namespace std;
int n,m;
int z,x,y,f[10010];
int get(int k){
if(f[k] == k)return k;
return f[k] = get(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;//x,y,z是随着输入一起改变的
if(z == 1){
f[get(x)] = get(y);//因为是将x,y合并,所以是将x弄到y的树根上
}
else{
if (get(x) == get (y))cout << "Y" << endl;
else cout << "N" << endl;
}
}
return 0;
}
并查集的板子
最新推荐文章于 2022-06-04 19:42:26 发布