晓轩

博客园 首页 联系 订阅 管理

#include<iostream>
#include<cstring>
using namespace std;

const int MAX=50001;

int father[MAX];

void Init(int n)
{
 for(int i=1;i<=n;i++)
  father[i]=i;
}

int find(int x)
{
 if(father[x]!=x)
  father[x]=find(father[x]);
 return father[x];
}

void merge(int x,int y)
{
 int fx,fy;
 fx=find(x);
 fy=find(y);
 if(fx!=fy)
  father[fy]=fx;
}

int main()
{
 int x,y,n,m,i,T=1,ans;
 while(cin>>n>>m)
 {
  ans=0;
  if(n==0&&m==0)
   break;
  Init(n);
  while(m--)
  {
   cin>>x>>y;
   merge(x,y);
  }
  for(i=1;i<=n;i++)
   ans+=(father[i]==i);
  cout<<"Case "<<T++<<": "<<ans<<endl;

 }
 return 0;
}

posted on 2013-08-17 18:14  晓轩  阅读(116)  评论(0)    收藏  举报