poj 1611 The Suspects(并查集)

来源:互联网 发布:黄金软件哪个好 编辑:程序博客网 时间:2024/05/21 17:14
#include <cstdio>int f[30010];int n,m;int getf(int x){    if(x == f[x])        return x;    return (f[x] = getf(f[x]));}void merge(int a, int b){    a = getf(a);    b = getf(b);    if(a != b)    {        if(b == 0)            f[a] = b;        else if(a == 0)            f[b] = a;        else            f[b] = a;    }}int main(){    int a,b,k,res;    while(scanf("%d %d",&n,&m) && n)    {        res = 0;        for(int i = 0; i < n; ++i)            f[i] = i;        for(int i = 0; i < m; ++i)        {            scanf("%d %d",&k,&a);            for(int j = 1; j < k; ++j)            {                scanf("%d",&b);                merge(a,b);            }        }        //本来以为这样会超时呢,没想到才16M        for(int i = 0; i < n; ++i)            if(getf(i) == 0) ++res;        printf("%d\n",res);    }    return 0;}
0 0
原创粉丝点击