并查集,但统计的是每一个集合的元素个数。因此,把每个元素的的个数放入num[i]中,通过并查集的合并把元素合并
#include<stdio.h>
#include<string.h>
//#include<algorithm>
//using namespace std;
int n;
int tot;
int fa[10000010];
int num[10000010];
void init()
{
int i,j;
for(i=1;i<=10000000;i++)
{
fa[i]=i;
num[i]=1;
}
return;
}
int getf(int v)
{
if(fa[v]==v)
return fa[v];
else
{
fa[v]=getf(fa[v]);
return fa[v];
}
}
void merge(int v,int u)
{
int t1,t2;
t1=getf(v);
t2=getf(u);
if(t1!=t2)
{
fa[t2]=t1;
num[t1]+=num[t2];
}
return;
}
int main()
{
//freopen("t.txt","r",stdin);
while(scanf("%d",&n)!=EOF)
{
tot=0;
if(n==0)
{
printf("1\n");
continue;
}
init();
int i,j;
int x,y;
for(i=1;i<=n;i++)
{
scanf("%d%d",&x,&y);
if(x>tot)
tot=x;
if(y>tot)
tot=y;
merge(x,y);
}
int res=0;
int temp=fa[1],count=0;
for(i=1;i<=tot;i++)
{
if(num[i]>res)
res=num[i];
}
printf("%d\n",res);
}
return 0;
}