这里没有题解.
2025-08-07 18:46:31
发布于:上海
2阅读
0回复
0点赞
#include<iostream>
int n,m,b[200001],t[200001];
int get(int idx){
if(idx==b[idx])return idx;
return b[idx]=get(b[idx]);
}
void merge(int x,int y){
int fx=get(x),fy=get(y);
if(fx==fy)return;
if(t[fx]>t[fy])b[fy]=fx;
else{
b[fx]=fy;
if(t[fx]==t[fy])++t[fy];
}
}
int main(){
std::cin.tie(0)->sync_with_stdio(0);
std::cout.tie(0);
std::cin >> n >> m;
for(int i(1);i<=n;++i)b[i]=i;
int x,y,z;
while(m--){
std::cin >> z >> x >> y;
if(z==1)merge(x,y);
else std::cout << (get(x)==get(y)?"Y\n":"N\n");
}
return 0;
}
这里空空如也
有帮助,赞一个