您的位置:首页 > 其它

HDU 1856 More is better (并查集模板题)

2015-08-25 15:23 323 查看
统计各个集合元素个数,水、、、

#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
const int maxn=10000005;
int Fa[maxn],n,ans[maxn];
void init()
{
    for(int i=0;i<maxn;i++) Fa[i]=i,ans[i]=1;
}
int Find(int x)
{
    if(x==Fa[x]) return x;
    return Fa[x]=Find(Fa[x]);
}
void Merge(int x,int y)
{
    x=Find(x),y=Find(y);
    if(x!=y)
    {
        Fa[y]=x,ans[x]+=ans[y];
        //printf("ans[%d] = %d\n",x,ans[x]);
    }
}
int main()
{
    while(~scanf("%d",&n))
    {
        init();
        for(int i=0;i<n;i++)
        {
            int x,y;
            scanf("%d%d",&x,&y);
            Merge(x,y);
        }
        int Max=-1;
        for(int i=1;i<maxn;i++)
             Max=max(Max,ans[i]);
        cout<<Max<<endl;
    }
    return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: