POJ1611——The Suspects

来源:互联网 发布:tensorflow lrelu 编辑:程序博客网 时间:2024/06/03 11:17
标准的并查集应用,需要路径压缩。
#include <iostream>#include <cstdio>#include <cstdlib>#include <cstring>#include <algorithm>using namespace std;const int maxN=30001;int fa[maxN],rank[maxN];void init(int n){    for(int i=0;i<n;i++)    {        fa[i]=i;        rank[i]=1;    }}int find_father(int x){    return fa[x]==x?x:find_father(fa[x]);}void Merge(int x,int y){    int ra=find_father(x);    int rb=find_father(y);    if(ra==rb) return;    if(rank[ra]>rank[rb])    {        fa[rb]=ra;        rank[ra]+=rank[rb];    }    else    {        fa[ra]=rb;        rank[rb]+=rank[ra];    }}int Query(int x){    int r=find_father(x);    return rank[r];}int main(){    int n,m;    //freopen("stdin.txt","r",stdin);    while(scanf("%d %d",&n,&m) && (n+m))    {        int k;        int i,j;        int first,next;        init(n);        for(i=0;i<m;i++)        {            scanf("%d %d",&k,&first);            for(j=1;j<k;j++)            {                scanf(" %d",&next);                Merge(first,next);            }        }        printf("%d\n",Query(0));    }    return 0;}

0 0
原创粉丝点击