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

来源:互联网 发布:windows 10通怎么ping 编辑:程序博客网 时间:2024/06/06 08:50

统计各个集合元素个数,水、、、

#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;}


0 0