POJ2524(并查集)

#include <iostream>
#define M 50005
using namespace std;

int n,m,fa[M];
int find_fa(int x)
{
  while(fa[x]!=x)
  {
    x=fa[x];
  }
  return x;
}
void merg(int x,int y)
{
  if(find_fa(x)!=find_fa(y))
  {
    fa[find_fa(x)]=find_fa(y);
  }
}
int main()
{
  int i,a,b,sum,si=1;
  while(cin>>n>>m,n||m)
  {
    sum=0;
    for(i=1;i<=n;i++)
      fa[i]=i;
    for(i=0;i<m;i++)
    {
      cin>>a>>b;
      merg(a,b);
    }
    for(i=1;i<=n;i++)
    {
      if(fa[i]==i)
      sum++;
    }
    cout<<"Case "<<si<<": "<<sum<<endl;
    si++;
  }
return 0;
}

posted @ 2013-04-18 14:05  algorithms爱好者  阅读(94)  评论(0)    收藏  举报