九度教程第67题
C语言源码:
[cpp]
#include<stdio.h>
#define maxsize 10000000
typedef struct tree
{
int parent;
int numchild;
}tree;
tree T[maxsize];
int findroot(int x)
{
int temp;
if(T[x].parent==-1)
return x;
else
{
temp=findroot(T[x].parent);
T[x].parent=temp;
}
return temp;
}
int main()
{
int n,a,b,i,roota,rootb,max;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<maxsize;i++)
{
T[i].parent=-1;
T[i].numchild=1;
}
while(n--)
{
scanf("%d %d",&a,&b);
a--;
b--;
roota=findroot(a);
rootb=findroot(b);
if(roota!=rootb)
{
T[rootb].parent=roota;
T[roota].numchild+=T[rootb].numchild;
}
}
max=0;
for(i=0;i<maxsize;i++)
if(T[i].numchild>max)
max=T[i].numchild;
printf("%d\n",max);
}
}
补充:软件开发 , C++ ,