poj 1611 The Suspects

来源:互联网 发布:政务数据资源网 编辑:程序博客网 时间:2024/05/21 10:56

原题链接:http://poj.org/problem?id=1611

基础的并查集,开始时因为一个输入数据的地方写的有问题wa了好几遍,幸好后来发现了⊙﹏⊙b汗。。。

具体实现如下:

#include<stdio.h>#include<stdlib.h>#include<string.h>#define Max_N 30040int par[Max_N], rank[Max_N];void init(int n){int i;for (i = 0; i < n; i++){par[i] = i;rank[i] = 1;}}int find(int x){if (x == par[x]) return x;else return par[x] = find(par[x]);}void unite(int x, int y){x = find(x), y = find(y);if (x == y) return;if (rank[x] >= rank[y]){par[y] = x;rank[x] += rank[y];} else {par[x] = y;rank[y] += rank[x];}}int main(){#ifdef LOCALfreopen("in.txt", "r", stdin);freopen("out.txt", "w+", stdout);#endifint n, m, t, l, p, k;while (~scanf("%d %d", &n, &m)){if (0 == n && 0 == m) break;init(n);while (m--){scanf("%d %d", &t, &k);l = t;for (l = 1; l < t; l++){scanf("%d", &p);unite(k, p);}}printf("%d\n", rank[par[0]]);}return 0;}

0 0
原创粉丝点击