当前位置:编程学习 > C/C++ >>

九度教程第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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,