zoukankan      html  css  js  c++  java
  • 1012.畅通工程

    题目描述:

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

    输入:

        测试输入包含若干测试用例。每个测试用例的第1行给出两个正整数,分别是城镇数目N ( < 1000 )和道路数目M;随后的M行对应M条道路,每行给出一对正整数,分别是该条道路直接连通的两个城镇的编号。为简单起见,城镇从1到N编号。 
        注意:两个城市之间可以有多条道路相通,也就是说
        3 3
        1 2
        1 2
        2 1
        这种输入也是合法的
        当N为0时,输入结束,该用例不被处理。

    输出:

        对每个测试用例,在1行里输出最少还需要建设的道路数目。

    样例输入:
    4 2
    1 3
    4 3
    3 3
    1 2
    1 3
    2 3
    5 2
    1 2
    3 5
    999 0
    0
    样例输出:
    1
    0
    2
    998


    #include<stdio.h>
    using namespace std;
    #define N 1000
    int tree[N];
    int findroot(int x){
        if(tree[x]==-1) return x;
        else {
            int temp=findroot(tree[x]);
            tree[x]=temp;
            return temp;
        }
    }
    
    int main(){
        int n,m;
        while(scanf("%d",&n)!=EOF && n!=0){
            scanf("%d",&m);
            for(int i=1;i<=n;i++) tree[i]=-1;
            while(m--!=0){
                int a,b;
                scanf("%d%d",&a,&b);
                a=findroot(a);
                b=findroot(b);
                if(a!=b) tree[a]=b;
            }
            int ans=0;
            for(int i=1;i<=n;i++){
                if(tree[i]==-1) ans++;
            }
            printf("%d
    ",ans-1);
        }
        return 0;
    }
  • 相关阅读:
    elk系统生成请求数据测试承载量、宕机瓶颈shell
    给公司个别安装好的系统环境处理-相当half系统初始化脚本shell
    elk相关启动脚本-shell编写
    ab压力测试
    FILEBEAT+ELK日志收集平台搭建流程
    linux单机部署kafka(filebeat+elk组合)
    linux系统安装MongoDB文档
    Java 生成验证码图片
    Java与数据库学习总结
    java 字节流文件复制方法总结
  • 原文地址:https://www.cnblogs.com/bernieloveslife/p/9736507.html
Copyright © 2011-2022 走看看