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;
}

浙公网安备 33010602011771号