社区讨论

并查集板子题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 条回复,欢迎继续交流。

正在加载回复...