#include<cstdio>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
using namespace std;
int fa[10000005],num[10000005];
/*
int find(int x){
while(fa[x]!=x){
x=fa[x];
}
return x;
}
*/
int find(int x){ //我用上面的方法求父亲就会T,但是有些题目可以过,为了避免一直T,以后还是用这个吧
if(fa[x]!=x)fa[x]=find(fa[x]);
return fa[x];
}
int main(){
int n;
while(scanf("%d",&n)!=EOF){
int a,b;
int i;
for(i=0;i<10000005;i++){
fa[i]=i;
num[i]=1;
}
int mmin=10000005,mmax=-1;
for(i=1;i<=n;i++){
scanf("%d%d",&a,&b);
int aa=find(a);
int bb=find(b);
if(aa!=bb){
fa[aa]=bb;
num[bb]+=num[aa];
}
mmin=min(mmin,aa);
mmin=min(mmin,bb);
mmax=max(mmax,aa);
mmax=max(mmax,bb);
}
int ans=1; //这里ans=0;就会wa,但是我不知道为什么
for(i=mmin;i<=mmax;i++){
ans=max(ans,num[i]);
}
printf("%d\n",ans);
}
return 0;
}
hdu1856 More is better
最新推荐文章于 2021-05-23 22:36:57 发布