您的位置:首页 > 其它

poj 2524 并查集

2016-11-24 23:10 381 查看
#include<iostream>
#include<cstdio>
using namespace std;
const int maxn=5*1e4+5;
int par[maxn],res,n,m,num[maxn];
void init()
{
for(int i=1;i<=n;i++)
par[i]=i;
res=n;
}
int find(int num)
{
if(par[num]==num)
return num;
return par[num]=find(par[num]);
}
int main()
{
int x,y,t=0;
while(scanf("%d%d",&n,&m)!=EOF&&(n||m))
{
init();
while(m--&&scanf("%d%d",&x,&y)!=EOF)
{
int fa=find(x),fb=find(y);
if(fa!=fb)
{
res--;
par[fa]=fb;
}
}
printf("Case %d: %d\n",++t,res);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: