zoukankan      html  css  js  c++  java
  • HDU 1232 畅通工程

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

    题意:
    某省调查城镇交通状况,得到现有城镇道路统计表,表中列出了每条道路直接连通的城镇。省政府“畅通工程”的目标是使全省任何两个城镇间都可以实现交通(但不一定有直接的道路相连,只要互相间接通过道路可达即可)。问最少还需要建设多少条道路? 

    思路:

    并查集基础题。

    #include<iostream> 
    #include<cstring>
    #include<algorithm>
    using namespace std;
    
    const int maxn = 1000 + 5;
    
    int n, m;
    int p[maxn];
    
    int find(int x)
    {
        return p[x] == x ? x : find(p[x]);
    }
    
    int main()
    {
        //freopen("D:\txt.txt", "r", stdin);
        while (scanf("%d",&n) && n)
        {
            scanf("%d",&m);
            int num = 0;
            for (int i = 1; i <= n; i++)
                p[i] = i;
            int a, b;
            for (int i = 0; i < m; i++)
            {
                cin >> a >> b;
                int x = find(a);
                int y = find(b);
                if (x != y)
                {
                    p[x] = y;
                    num++;
                }
            }
            printf("%d
    ", n -1 - num);
        }
        return 0;
    }
  • 相关阅读:
    jQuery_第一章_JavaScript基础
    呵呵双钻
    MINIDVD
    幸运抽奖
    三章
    复习
    三种循环
    百文买百鸡
    1~100的奇数和
    Python memcache和redis
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6387197.html
Copyright © 2011-2022 走看看