社区讨论
并查集板子题MLE 50pts
P3367【模板】并查集参与者 3已保存回复 6
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 6 条
- 当前快照
- 1 份
- 快照标识符
- @mhjhvvpu
- 此快照首次捕获于
- 2025/11/04 02:50 4 个月前
- 此快照最后确认于
- 2025/11/04 02:50 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,p,k,a[200010],u,v,q1,q2,ls,z;
vector<int> Q[200010];
int main(){
cin>>n>>m;
for(int i=1;i<=m;i++){
cin>>z>>u>>v;
if(z==2){
if((a[u]==a[v]&&a[u]!=0)||u==v) cout<<"Y"<<'\n';
else cout<<"N"<<'\n';
continue;
}
if(a[u]==a[v]&&a[u]!=0) continue;
if(a[u]==0){
if(a[v]==0){
k++;
a[u]=k;
a[v]=k;
Q[k].push_back(u);
Q[k].push_back(v);
}
else{
a[u]=a[v];
Q[a[v]].push_back(u);
}
}
else{
if(a[v]==0){
a[v]=a[u];
Q[a[u]].push_back(v);
}
else{
ls=a[v];
for(int j=0;j<Q[ls].size();j++){
a[Q[ls][j]]=a[u];
Q[a[u]].push_back(Q[ls][j]);
}
Q[ls].clear();
}
}
}
return 0;
}
回复
共 6 条回复,欢迎继续交流。
正在加载回复...