• Source
    1. #include<iostream>
    2. #include<cstdio>
    3. using namespace std;
    4.  
    5. int d[50001];
    6. int g;
    7.  
    8. void init(int N)
    9. {
    10. for(int i=1;i<=N;i++)
    11. d[i]=i;
    12. g=N;
    13. }
    14. int find(int i)
    15. {
    16. if(d[i]==i)return i;
    17. return d[i] = find(d[i]);
    18. }
    19. bool same(int a,int b)
    20. {
    21. return find(a)==find(b);
    22. }
    23. void U(int a,int b)
    24. {
    25. if(!same(a,b))
    26. {
    27. d[find(a)]=find(b);
    28. g--;
    29. }
    30. }
    31. int main()
    32. {
    33. int N,M,a,b,c=1;
    34. while(cin>>N>>M , N!=0&&M!=0)
    35. {
    36. init(N);
    37. while(M--)
    38. {
    39. cin>>a>>b;
    40. U(a,b);
    41. }
    42. printf("Case %d: %d\n",c++,g);
    43. }
    44. return 0;
    45. }
    46.