hpuoj 1696 工程

来源:互联网 发布:程序员网上接项目 编辑:程序博客网 时间:2024/06/07 11:28

问题 H: 工程

时间限制: 1 Sec  内存限制: 128 MB
提交: 73  解决: 38
[提交][状态][讨论版]

题目描述

CZY总是遇到这样或那样的问题,现在他又遇到了一个,CZY接到一个大的工程,想想这是走上人生巅峰的第一步啊,CZY想想就高兴,可是这个工程太大了,他需要很多人的帮助才可以,但是为了方便工作,CZY希望他的团队两人两人之间都是朋友关系,或者间接是朋友关系。毕竟是大油水的工程啊,来了一群小伙伴报名,CYZ想请聪明的你帮忙算一算,他可以招到的最大的人数是多少

输入

输入包含多组测试数据,每组测试数据第一行一个n,表示来报名的小伙伴们的编号1-100,后边接n行,每行两个整数a b,表示编号a和b的小伙伴是朋友关系

输出

输出包括一行,即CZY可以招到的最大的人数是多少

样例输入

41 23 45 61 6

样例输出

4
水。。。。
#include<cstdio> #include<cstring> int pre[110]; int maxn,rec[110]; int find(int x) {     if(x!=pre[x])     {         pre[x]=find(pre[x]);         rec[x]++;     }     return pre[x]; } void join(int a,int b) {     int fa=find(a);     int fb=find(b);     if(fa!=fb)     {         pre[fa]=fb;         rec[fb]+=rec[fa];         if(rec[fb]>maxn)             maxn=rec[fb];     } } int main() {     int n,a,b;     while(~scanf("%d",&n))     {         maxn=0;         for(int i=1;i<=100;++i)         {             pre[i]=i;             rec[i]=1;         }         int m=n;         while(n--)         {             scanf("%d%d",&a,&b);             join(a,b);         }         printf("%d\n",maxn);     }     return 0; } 

0 0