【并查集】hdu 1856 More is better

来源:互联网 发布:php erp系统 编辑:程序博客网 时间:2024/04/24 13:54

http://acm.hdu.edu.cn/showproblem.php?pid=1856

题意:求每个人都相互认识(间接或直接)最大的集合。


#include <iostream>#include <cstdio>#include <cstring>using namespace std;const int NM=10000005;int father[NM],rank[NM],mmax;int Find(int x){    /*while(x!=father[x])x=father[x];return x; 超时*/ /*if(x!=father[x])father[x]=Find(father[x]);return father[x];  小心爆栈*/    int t,p1=x;while(p1!=father[p1])p1=father[p1];while(x!=p1){t=father[x];father[x]=p1;x=t;}return p1;}void Union(int x,int y){x=Find(x);y=Find(y);if(x!=y){father[x]=y;rank[y]+=rank[x];if(mmax<rank[y]) mmax=rank[y];}}int main(){int m,x,y,i;while(~scanf("%d",&m)){for(i=1;i<NM;i++){father[i]=i;rank[i]=1;}mmax=1;  //for(i=0;i<m;i++){scanf("%d%d",&x,&y);Union(x,y);}printf("%d\n",mmax);}return 0;}



0 0
原创粉丝点击