并查集80puts求调
查看原帖
并查集80puts求调
907113
Bug_Hunter楼主2024/7/11 11:14
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
int n,x,y,fa[N],vis[N],maxx,cnt[N];
int find(int x){
	if(fa[x]==x) return x;
	return fa[x]=find(fa[x]);
}
int main(){
	cin>>n;
	for(int i=1;i<=10000;i++) fa[i]=i;
	for(int i=1;i<=n;i++){
		cin>>x>>y;
		int fx=find(x),fy=find(y);
		if(fx==fy) vis[fx]=1;
		else{
			if(fx>fy) swap(fx,fy);
			vis[fx]=1;
			fa[fx]=fy;
		}
	}
	for(int i=1;i<=10000;i++){
		if(vis[i]==1) cnt[i]=cnt[i-1]+1;
		maxx=max(maxx,cnt[i]);
	}
	cout<<maxx;
	return 0;
}
2024/7/11 11:14
加载中...