参考:
1.HDU 1856 More is better
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1856
题目大意:
给出N对关系 2*n 个人,求关系圈最大的人数。
解题思路:
AC Code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 const int maxn=10000005; 4 int f[maxn],v[maxn]; 5 6 int findset(int x) 7 { 8 return f[x]!=x?f[x]=findset(f[x]):f[x]; 9 } 10 11 void merge(int a,int b) 12 { 13 int fa=findset(a); 14 int fb=findset(b); 15 if(fa!=fb) f[fa]=fb; 16 } 17 18 int main() 19 { 20 int n,a,b,i,ans; 21 while(~scanf("%d",&n)) 22 { 23 ans=0; 24 for(i=1; i<=10000000; i++) f[i]=i,v[i]=0; 25 while(n--) 26 { 27 scanf("%d %d",&a,&b); 28 merge(a,b); 29 } 30 for(i=1; i<=10000000; i++) v[findset(f[i])]++; 31 for(i=1; i<=10000000; i++) ans=ans>v[i]?ans:v[i]; 32 printf("%d ",ans); 33 } 34 return 0; 35 }