标签:
Description
Input
Output
Sample Input
10 9 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 1 10 10 4 2 3 4 5 4 8 5 8 0 0
Sample Output
Case 1: 1 Case 2: 7
Hint
#include <cstdio> int x,y,pa[1000000]; int cha(int k) { if(pa[k]!=k) { pa[k]=cha(pa[k]); } return pa[k]; } bool bing(int x,int y) { int x2=cha(x); int y2=cha(y); if(x2==y2) return false; pa[y2]=x2; return true; } void init(int n) { for(int i=0; i<=n; i++) { pa[i]=i; } } int main() { int n,m,k,a,b,cas=1,i; while(scanf("%d%d",&n,&m)&&(m+n)) {int count=0; init(n); for(i=1; i<=m; i++) { scanf("%d%d",&a,&b); bing(a,b); } for(i=1;i<=n;i++) { if(pa[i]==i)//直接求根节点的个数就可以得知 count++; } printf("Case %d: %d\n",cas++,count); } return 0; }
标签:
原文地址:http://www.cnblogs.com/tianmin123/p/4620829.html