hdu 1856 More is better 并查集找最大集合

来源:互联网 发布:域名生成工具 编辑:程序博客网 时间:2024/06/14 07:04

题意:给出一些人物关系,他们都是朋友,找最大朋友圈

#include<cstdio>const int maxn = 10000010;int f[maxn],a[maxn];int Find(int x){if(x==f[x])return x;else return f[x]=Find(f[x]);}void Merge(int x,int y){int xx=Find(x);int yy=Find(y);if(xx!=yy){f[xx]=yy;a[yy]+=a[xx];//把以xx为根结点的集合加入到yy中 }}void init(){for(int i=1;i<=maxn;i++){f[i]=i;a[i]=1;}}int main(){int n;while(scanf("%d",&n)!=EOF){init();int u,v;while(n--){scanf("%d%d",&u,&v);Merge(u,v);}int ans=-1;for(int i=1;i<=maxn;i++)if(ans<a[i])ans=a[i];printf("%d\n",ans);}}

原创粉丝点击