码迷,mamicode.com
首页 > 其他好文 > 详细

poj2524

时间:2015-04-05 23:18:27      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:

题目连接:

题解:

普通的并查集 没什么特别的 下面看代码

#include<stdio.h>
#include<iostream>

using namespace std;

int bin[50010];
int findx(int x)
{
    return x == bin[x]?bin[x]:(bin[x] = findx(bin[x]));
}

int main()

{
    int n,m;
    int cas = 1;
    while(scanf("%d%d",&n,&m)&&m||n)
    {
        for(int i = 1;i <= n;i++)
        {
            bin[i] = i;
        }
        for(int i = 0;i < m;i++)
        {
            int a,b;
            scanf("%d%d",&a,&b);
            int fx,fy;
            fx = findx(a);
            fy = findx(b);
            if(fx != fy)
            {
                bin[fx] = fy;
            }
        }
        int sum = 0;
        for(int i = 1;i <= n;i++)
        {
            if(bin[i] == i)
            {
                sum++;
            }
        }
        printf("Case %d: %d\n",cas++,sum);
    }
    return 0;
}

 

poj2524

标签:

原文地址:http://www.cnblogs.com/zhanyage110/p/4394866.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!