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;
    }
  • 相关阅读:
    JSON基础知识
    Java 环境配置
    接口测试基础知识
    Fiddler初学笔记
    es6数组方法findIndex()
    sass+less相关
    前端库/框架/插件相关
    知名博主相关
    CSS相关
    移动Web相关
  • 原文地址:https://www.cnblogs.com/zyb993963526/p/6387197.html
Copyright © 2011-2022 走看看