Fork me on GitHub

POJ1611-The Suspects

继续刷邝斌飞并查集专题

POJ

可用平台

洛谷

 

感觉并查集没啥可出的题了

但题目我搞不懂为啥第二组数据输出1啊?也没有0啊,看了一堆题解才明白md,0本身就在学生堆里,不用非得在输入数据里艹

一次AC

AC代码

 1 #include<stdio.h>
 2 #include<string.h>
 3 #include<iostream>
 4 #define MAX 30000
 5 int pre[MAX];
 6 using namespace std;
 7 int c[MAX];
 8 int n,m;
 9 int find(int x)
10 {
11     if(x==pre[x])
12         return x;
13     pre[x]=find(pre[x]);
14     return pre[x];
15 }
16 void union_find(int a,int b)
17 {
18     int root1=find(a);
19     int root2=find(b);
20     pre[root1]=root2;
21 }
22 void init()
23 {
24     for(int i=0;i<n;i++)
25         pre[i]=i;
26 }
27 int main()
28 {
29     while(cin>>n>>m&&(n+m)){
30         init();
31         for(int i=0;i<m;i++){
32             int group;
33             cin>>group;
34             for(int i=0;i<group;i++){
35                 cin>>c[i];
36                 if(i==0)
37                     continue;
38                 union_find(c[i],c[0]);//每个团体都以第一个人为根,后面所有人都把根指向第一个人,最后只需要把0的根找出来存到变量里,把所有数的根和这个变量里的是一样的就ans++
39             }
40         }
41         int ans=0;
42         int root_zero=find(0);
43         for(int i=0;i<n;i++){
44             int root=find(i);
45             if(root==root_zero)
46                 ans++;
47         }
48         cout<<ans<<endl;
49     }
50 }

 

 

 

 

###:在线PS

###:好像看到了公众号真正的算法大佬“夜深人静写算法”的博主

###:我是看了可用平台里有百炼名字,用了许久前几天才知道是POJ团队的第二个oj平台,但为啥说百炼都是poj??但可用平台又没啥人知道,所以百炼是北大poj的某个内部黑话?哦百度“百练是北京大学ACM训练和相关程序课程在线考试系统”

posted @ 2024-11-11 19:49  GerJCS  阅读(3)  评论(0编辑  收藏  举报