zoukankan      html  css  js  c++  java
  • [kuangbin带你飞]专题六 最小生成树 L

    L - 还是畅通工程

    题目链接:https://vjudge.net/contest/66965#problem/L

    题目:

    某省调查乡村交通状况,得到的统计表中列出了任意两村庄间的距离。省政府“畅通工程”的目标是使全省任何两个村庄间都可以实现公路交通(但不一定有直接的公路相连,只要能间接通过公路可达即可),并要求铺设的公路总长度为最小。请计算最小的公路总长度。

    Input测试输入包含若干测试用例。每个测试用例的第1行给出村庄数目N ( < 100 );随后的N(N-1)/2行对应村庄间的距离,每行给出一对正整数,分别是两个村庄的编号,以及此两村庄间的距离。为简单起见,村庄从1到N编号。
    当N为0时,输入结束,该用例不被处理。
    Output对每个测试用例,在1行里输出最小的公路总长度。
    Sample Input
    3
    1 2 1
    1 3 2
    2 3 4
    4
    1 2 1
    1 3 4
    1 4 1
    2 3 3
    2 4 2
    3 4 5
    0
    Sample Output
    3
    5
    
    
            
     
    Huge input, scanf is recommended.
    Hint
    Hint
            
     思路:注意输入的T*(T-1)/2,然后跑最小生成树就行

    //
    // Created by hanyu on 2019/8/2.
    //
    #include <algorithm>
    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <queue>
    #include <set>
    #include<math.h>
    using namespace std;
    typedef long long ll;
    const int maxn=2e6+7;
    int father[maxn];
    struct Node{
        int u,v,w;
        bool operator<(const Node &other)const{
            return this->w<other.w;
        }
    }node[maxn];
    int find(int x)
    {
        if(x==father[x])
            return x;
        return father[x]=find(father[x]);
    }
    int main()
    {
        int T;
        while(~scanf("%d",&T)&&T){
            for(int i=0;i<=T;i++)
                father[i]=i;
            int ans=0,cnt=0;
            int kk=T*(T-1)/2;
            for(int i=0;i<kk;i++)
            {
                scanf("%d%d%d",&node[i].u,&node[i].v,&node[i].w);
            }
            sort(node,node+kk);
            for(int i=0;i<kk;i++)
            {
                int uu=find(node[i].u);
                int vv=find(node[i].v);
                if(uu==vv)
                    continue;
                else
                {
                    father[uu]=vv;
                    ans+=node[i].w;
                    cnt++;
                    if(cnt==T-1)
                        break;
                }
            }
            printf("%d
    ",ans);
        }
        return 0;
    }
     
  • 相关阅读:
    8组-Alpha冲刺-2/6
    8组-Alpha冲刺-1/6
    8组 需求分析报告
    结对编程作业
    8组 团队展示
    第一次个人编程作业
    第一次博客作业
    面向对象程序设计寒假作业3
    面向对象程序设计寒假作业2
    面向对象程序设计寒假作业1
  • 原文地址:https://www.cnblogs.com/Vampire6/p/11288756.html
Copyright © 2011-2022 走看看