您的位置:首页 > 其它

poj union_find相关之1611 The Suspects

2017-06-20 19:38 281 查看
poj union-find 1611 The Suspects

就是简单的并查集

#include<cstdio>
#include<cstring>
#include<iostream>
#include<memory.h>
#define MAXS 30005
#define MAXG 505
using namespace std;
int n, m;
int pre[MAXS];
int find(int t)
{
int a = t;
while (pre[a] != a)
a = pre[a];
return a;
}
void union_int(int a,int b)
{
int x, y;
x = find(a);
y = find(b);
if (x != y)
pre[y] = x;
}
int main()
{
//freopen("1.txt", "r", stdin);
int i, j, k, a, b, cont;
while (scanf("%d%d", &n, &m) != EOF && (n || m))
{
for (i = 0; i < n; i++)
pre[i] = i;
for (i = 0; i < m; i++)
{
scanf("%d", &k);
scanf("%d", &a);
for (j = 1; j < k; j++)
{
scanf("%d", &b);
union_int(a, b);
}
}
cont = 1;
j = find(0);
for (i = 1; i < n;i++)
if (find(i) == j)
cont++;
printf("%d\n", cont);
}
}


252K 16MS

比较高端的并查集的题 1182:食物链可以参考如下的博客:

http://blog.163.com/happyliyifan@126/blog/static/37462772201361695127793/

http://blog.csdn.net/tiantangrenjian/article/details/7085575
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: