题目链接
#include"stdio.h"
int set[10000001],sum[10000001],ans,max;
int find(int x)
{
int r,i;
r=x;
while(r!=set[r])
r=set[r];
while(x!=set[x])
{
i=set[x];
set[x]=r;
x=i;
}
return r;
}
void merge(int x,int y)
{
int fx,fy;
fx=find(x);
fy=find(y);
set[fx]=fy;
}
int main()
{
int i,x,y,n,t;
while(scanf("%d",&n)!=EOF)
{
if(n==0)
{
printf("1\n");
continue;
}
for(i=1;i<=10000000;i++)
{
set[i]=i;
sum[i]=0;
}
max=-1;
for(i=0;i<n;i++)
{
scanf("%d%d",&x,&y);
if(x>max) max=x;
if(y>max) max=y;
merge(x,y);
}
ans=-1;
for(i=1;i<=max;i++)
{
t=find(i);
sum[t]++;
if(sum[t]>ans)
ans=sum[t];
}
printf("%d\n",ans);
}
return 0;
}