poj 1611 The Suspects

简介: 点击打开链接poj 1611 思路:最简单的并查集应用 分析:在输入的时候把在同一个集合里面的元素全部合并起来,然后最后在找有几个元素和0的根节点相同即可。

点击打开链接poj 1611


思路:最简单的并查集应用

分析:在输入的时候把在同一个集合里面的元素全部合并起来,然后最后在找有几个元素和0的根节点相同即可。


代码:

#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 30010;

int n , m;
int num[MAXN];
int father[MAXN];

void init(){
    for(int i = 0 ; i <= n ; i++){
        father[i] = i;
        num[i] = 1;
    }
}

int find(int x){
    if(x != father[x])
        father[x] = find(father[x]);
    return father[x];
}

int main(){
    int k , x;
    while(scanf("%d%d" , &n , &m) && n+m){
        init(); 
        while(m--){
            scanf("%d" , &k);      
            int root;
            for(int i = 0 ; i < k ; i++){
                scanf("%d" , &x); 
                if(i == 0) 
                    root = find(x);
                else{
                    int fx = find(x);
                    if(fx != root){
                        father[fx] = root;
                        num[root] += num[fx];
                    }
                }
            }
        }
        printf("%d\n" , num[find(0)]);
    }
    return 0;
}



目录
相关文章
|
人工智能 算法 BI
poj 2192 Zipper
题目链接:http://poj.org/problem?id=2192 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 18658   Accepted: 6651 Description Given ...
977 0
POJ 1067 取石子游戏
取石子游戏 Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40917   Accepted: 13826 Description 有两堆石子,数量任意,可以不同。
1113 0
|
机器学习/深度学习 算法
|
算法 数据建模 机器学习/深度学习
poj1273Drainage Ditches
1 #include 2 /* 3 题意:就是寻找从源点到汇点的最大流! 4 要注意的是每两个点的流量可能有多个,也就是说有重边,所以要把两个点的所有的流量都加起来 5 就是这两个点之间的流量了! 6 ...
853 0
poj 1745 Divisibility
点击打开链接poj 1745 思路: dp 分析: 1 又是一道看了题解还不懂怎么个回事的题,然后各种YY之后有点感觉 2 题目要求的是在n个数中间插入n-1个的+或-使得结果能否被k整除 3 看一个数学的公式(a+b)%k = a%k...
787 0
POJ 1328
1 2 //坐标精度是int 3 /* 4 圆心位于 5 */ 6 #include 7 #include 8 #include 9 #include 10 using namespace std; 11 12 const int N =...
868 0