标签:
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1856
题意:朋友圈问题,A和B是朋友,B和C是朋友则A和C也是朋友,依次类推,题目的意思就是求最大的朋友圈,即求最大集合中元素的个数。裸的并查集加个秩数组就行了。
#include <stdio.h> int father[100050]; int rank[100050]; int Find_Set (int x) { if(x!=father[x]) father[x] = Find_Set(father[x]); return father[x]; } int main() { int n; while(scanf("%d",&n)!=EOF) { for(int i=0;i<100040;i++) { father[i] = i; rank[i] = 1; } for(int i=0;i<n;i++) { int x,y; scanf("%d%d",&x,&y); int fx = Find_Set(x); int fy = Find_Set(y); if(fx!=fy) { father[fy] = fx; rank[fx] += rank[fy]; } } int _max = 0; for(int i=0;i<100040;i++) _max = (rank[i]>_max) ? rank[i]:_max; printf("%d\n",_max); } return 0; }
标签:
原文地址:http://www.cnblogs.com/TreeDream/p/5740536.html