2805=大家快来A水题
Posted angfe
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2805=大家快来A水题相关的知识,希望对你有一定的参考价值。
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 ",sum); 49 } 50 return 0; 51 }
以上是关于2805=大家快来A水题的主要内容,如果未能解决你的问题,请参考以下文章