码迷,mamicode.com
首页 > 其他好文 > 详细

2805=大家快来A水题

时间:2019-03-16 19:20:14      阅读:138      评论:0      收藏:0      [点我收藏+]

标签:void   组织   并查集   就是   std   merge   code   \n   print   

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 int n,m;//并查集。
 4 int a[100000];
 5 void creat()//用来给每个单位赋值的,每个单位的值代表他们的上一级。
 6 {
 7     int i;
 8     for(i=1; i<=n; i++)
 9     {
10         a[i]=i;
11     }
12     return;
13 }
14 int find(int x)//寻找上一级的上一级,知道找到幕后黑手。
15 {
16     if(a[x]==x)return x;
17     else
18     {
19         a[x]=find(a[x]);
20     }
21     return a[x];
22 }
23 void merge(int x,int y)//讲两个组织合并,评判出一个老大。
24 {
25     int t1,t2;
26     t1=find(x);
27     t2=find(y);
28     if(t1==t2);
29     else a[t2]=t1;
30     return;
31 }
32 int main()
33 {
34     int i,c,b,sum;
35     while(~scanf("%d %d",&n,&m))
36     {
37         creat();
38         sum=0;
39         for(i=1; i<=m; i++)
40         {
41             scanf("%d %d",&c,&b);
42             merge(c,b);
43         }
44         for(i=1; i<=n; i++)//如果这个组织的上一级就是他自己的话就代表他是一个老大,并计数。
45         {
46             if(a[i]==i)sum++;
47         }
48         printf("%d\n",sum);
49     }
50     return 0;
51 }

 

2805=大家快来A水题

标签:void   组织   并查集   就是   std   merge   code   \n   print   

原文地址:https://www.cnblogs.com/Angfe/p/10543828.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!