zoukankan      html  css  js  c++  java
  • 5-4 公路村村通 (30分)【简单的最小生成树】

    5-4 公路村村通   (30分)

    现有村落间道路的统计数据表中,列出了有可能建设成标准公路的若干条道路的成本,求使每个村落都有公路连通所需要的最低成本。

    输入格式:

    输入数据包括城镇数目正整数NNle 10001000)和候选道路数目MMle 3N3N);随后的MM行对应MM条道路,每行给出3个正整数,分别是该条道路直接连通的两个城镇的编号以及该道路改建的预算成本。为简单起见,城镇从1到NN编号。

    输出格式:

    输出村村通需要的最低成本。如果输入数据不足以保证畅通,则输出-11,表示需要建设更多公路。

    输入样例:

    6 15
    1 2 5
    1 3 3
    1 4 7
    1 5 4
    1 6 2
    2 3 4
    2 4 6
    2 5 2
    2 6 6
    3 4 6
    3 5 1
    3 6 1
    4 5 10
    4 6 8
    5 6 3
    

    输出样例:

    12


    #include <bits/stdc++.h>
    using namespace std;
    typedef long long LL;
    typedef unsigned long long ULL;
    typedef pair<int,int>PII;
    const double eps=1e-5;
    const double pi=acos(-1.0);
    const int mod=1e9+7;
    const int INF=0x3f3f3f3f;
    const int N=1e3+10;
    
    struct asd{
        int w;
        int u,v;
    };
    asd q[N*3];
    int pre[N];
    
    bool cmp(asd x,asd y)
    {
        return x.w<y.w;
    }
    
    int Find(int x)
    {
        int r=x;
        while(pre[r]!=r)
            r=pre[r];
    
        int i=x,j;
        while(pre[i]!=r)
        {
            j=pre[i];
            pre[i]=r;
            i=j;
        }
        return r;
    }
    
    int main()
    {
        int n,m;
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
            pre[i]=i;
    
        for(int i=0;i<m;i++)
            scanf("%d%d%d",&q[i].u,&q[i].v,&q[i].w);
        sort(q,q+m,cmp);
        int ans=0;
        for(int i=0;i<m;i++)
        {
            int xx=Find(q[i].u);
            int yy=Find(q[i].v);
            if(xx!=yy)
            {
                ans+=q[i].w;
                pre[xx]=yy;
            }
        }
        int flag=0;
        for(int i=1;i<=n;i++)
        {
            if(pre[i]==i)
                flag++;
            if(flag>1)
            {
                puts("-1");
                return 0;
            }
        }
        printf("%d
    ",ans);
        return 0;
    }
    
    



  • 相关阅读:
    同步与异步 & 阻塞与非阻塞
    Memcached和Redis比较
    PHP安全之Web攻击
    搭建LNAMP环境(七)- PHP7源码安装Memcached和Memcache拓展
    PHP安装mysql.so扩展
    MySQL基础笔记
    CGI概念
    Nginx与Apache比较
    Nginx重写
    负载均衡session会话保持方法
  • 原文地址:https://www.cnblogs.com/keyboarder-zsq/p/6777518.html
Copyright © 2011-2022 走看看