Time Limit: 5000/1000 MS
(Java/Others) Memory Limit: 327680/102400 K
(Java/Others)
Total Submission(s): 11952 Accepted
Submission(s): 4417
1 //359MS 78584K 889 B G++ 2 /* 3 4 题意: 5 给出n对朋友关系,求直接或间接认识的最大的集体 6 7 并查集: 8 赤裸裸的并查集,直接并查集解法,注意数组大小和没朋友关系的情况。 9 10 */ 11 #include<stdio.h> 12 #include<string.h> 13 int set[10000005]; 14 int num[10000005]; 15 int find(int x) 16 { 17 if(set[x]==x) return x; 18 return find(set[x]); 19 } 20 void merge(int a,int b) 21 { 22 int x=find(a); 23 int y=find(b); 24 if(x>y) set[x]=y; 25 else set[y]=x; 26 } 27 int main(void) 28 { 29 int n,a,b; 30 while(scanf("%d",&n)!=EOF) 31 { 32 int m=0; 33 for(int i=0;i<10000005;i++) set[i]=i; 34 for(int i=0;i<n;i++){ 35 scanf("%d%d",&a,&b); 36 merge(a,b); 37 if(a>m) m=a; 38 if(b>m) m=b; 39 } 40 memset(num,0,sizeof(num)); 41 int cnt=0; 42 for(int i=1;i<=m;i++){ 43 int t=find(set[i]); 44 num[t]++; 45 if(num[t] > cnt) cnt=num[t]; 46 } 47 if(cnt==0) printf("1\n"); //没朋友关系时只能留一个 48 else printf("%d\n",cnt); 49 } 50 return 0; 51 }
hdu 1856 More is better (并查集),布布扣,bubuko.com
原文:http://www.cnblogs.com/GO-NO-1/p/3596729.html