关于抽象MLE
  • 板块灌水区
  • 楼主sndd
  • 当前回复3
  • 已保存回复3
  • 发布时间2024/11/23 21:07
  • 上次更新2024/11/23 23:10:34
查看原帖
关于抽象MLE
1225446
sndd楼主2024/11/23 21:07

rt莫名其妙M了一个,求条

原题->P7299

提交记录->MLE

Code

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+7;

int n,K;
int ckb[N],fa[N];
set<int> s[N];

int rt(int x){
	return (fa[x]=(fa[x]==x?x:rt(fa[x])));
}

void merge(int x,int y){
	int fx=rt(x);
	int fy=rt(y);
	if(fx==fy) return;
	fa[fx]=fy;
	s[fy].insert(s[fx].begin(),s[fx].end());
}

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	cin>>n>>K;
	for(int i=1;i<=n;i++) fa[i]=ckb[i]=i,s[i].insert(i);
	for(int i=1;i<=K;i++){
		int x,y;cin>>x>>y;
		swap(ckb[x],ckb[y]);
		s[ckb[x]].insert(y);s[ckb[y]].insert(x);
	}
	for(int i=1;i<=n;i++){
		if(ckb[i]==i) continue;
		merge(i,ckb[i]);
	}
	for(int i=1;i<=n;i++){
		cout<<s[rt(i)].size()<<'\n';
	}
	return 0;
}
2024/11/23 21:07
加载中...