hdu 1232 畅通工程 (并查集)

简介:

题目:http://acm.hdu.edu.cn/showproblem.php?pid=1232

复制代码
/************************************************************************/
/*     
        hdu  畅通工程
        最简单的并查集
        题目大意:求建设最少的路径使得道路畅通
        解题思路:并查集,利用并查集,合并可达的集合,即连通的地方为一个集合,计算集合数目;
                 集合数目减少1即为需要修道路数目
*/
/************************************************************************/

#include <stdio.h>
#include <string.h>
#include <algorithm>

const int N = 1001;
int root[N];
int count;

int find_root(int a)
{
    if(root[a] == a)return a;
    return root[a] = find_root(root[a]);
}


void union_set(int a, int b)
{
    int x = find_root(a);
    int y = find_root(b);
    if(x==y)return;
    else{
        root[y] = x;
    }
}

int main()
{
    int m,n,x,y;
    while(scanf("%d%d",&n,&m) && n != 0)
    {
        for (int i = 1; i <= n; i++)
        root[i] = i;
        count = 0;
        for (int j = 0; j < m; j++)
        {
            scanf("%d%d",&x,&y);
            union_set(x,y);
        }
        for (int i = 1; i <= n; i++)
        {
            if(root[i] == i)count++;
        }
        printf("%d\n",count-1);
    }
    return 0;
}
复制代码

 










本文转自NewPanderKing51CTO博客,原文链接:http://www.cnblogs.com/newpanderking/p/3248947.html ,如需转载请自行联系原作者

相关文章
|
测试技术
HDU-1232,畅通工程(并查集)
HDU-1232,畅通工程(并查集)
HDU-1874,畅通工程续(Floyd最短路)
HDU-1874,畅通工程续(Floyd最短路)
|
算法 机器学习/深度学习
|
人工智能 BI 存储
【HDU 4771 Stealing Harry Potter&#39;s Precious】BFS+状压
2013杭州区域赛现场赛二水。。。 类似“胜利大逃亡”的搜索问题,有若干个宝藏分布在不同位置,问从起点遍历过所有k个宝藏的最短时间。 思路就是,从起点出发,搜索到最近的一个宝藏,然后以这个位置为起点,搜索下一个最近的宝藏,直至找到全部k个宝藏。
1043 0