您的位置:首页 > 其它

POJ 2524

2015-06-11 11:08 197 查看
#include<iostream>
#define MAXN 50000
using namespace std;

int parent[MAXN];
int Find_set(int);
void Make_set(int);
void Union(int,int);
int main()
{
//freopen("acm.acm","r",stdin);
int p;
int s;
int i;
int j;
int m;
int n;
int ans;
int time;
time = 1;
while(cin>>p>>s)
{
if(!p&&!s)
break;
ans = 0;
Make_set(p);
for(i = 0; i < s; ++ i)
{
cin>>m>>n;
Union(m-1,n-1);
}
for(i = 0; i < p; ++ i)
{
if(parent[i] == i)
{
++ ans;
}
}
cout<<"Case "<<time++<<": "<<ans<<endl;
}
}
void Make_set(int n)
{
int i;
for(i=0;i<n;i++)
parent[i]=i;
}
int Find_set(int x)
{
if(x!=parent[x])
parent[x]=Find_set(parent[x]);
return parent[x];
}
void Link(int x,int y)
{
parent[y]=x;
}
void Union(int x,int y)
{
Link(Find_set(x),Find_set(y));
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: