zoukankan      html  css  js  c++  java
  • ACM题目————还是畅通工程

    Submit Status

    Description

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

    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

    Hint

    Hint  Huge input, scanf is recommended.
            

    最小生成树的题目,因为点比较少,可以直接用普里姆算法。

    #include <iostream>
    #include <algorithm>
    #include <cstring>
    #include <cstdio>
    #include <cctype>
    #include <cstdlib>
    #include <stack>
    #include <cmath>
    #include <string>
    #include <queue>
    #define INF 0xffffff
    using namespace std;
    const int maxn = 101;
    typedef long long ll ;
    int n, m, x, y, v;
    int G[maxn][maxn], d[maxn];
    bool vis[maxn];
    
    int prim(){
        int pt, ret, Min;
        memset(vis,false,sizeof(vis));
        memset(d,0x7f,sizeof(d));
        pt = 1;
        vis[1] = true;
        ret = 0;
        while( true ){
            for(int i=1; i<=n; i++)
                if( !vis[i] && G[pt][i] && d[i]>G[pt][i] )
                    d[i] = G[pt][i];
            pt = -1;
            Min = INF ;
            for(int i=1; i<=n; i++){
                if( !vis[i] && Min > d[i] ){
                    Min = d[i];
                    pt = i;
                }
            }
            if( pt == -1 ) break;
            ret += Min;
            vis[pt] = true;
        }
        return ret;
    }
    
    int main(){
        while( ~scanf("%d",&n) && n){
            m = n * ( n - 1 ) / 2 ;
            memset(G,0,sizeof(G));
            while( m -- ){
                scanf("%d %d %d",&x,&y,&v);
                G[x][y] = G[y][x] = v ;
            }
            printf("%d
    ",prim());
        }
        return 0 ;
    }         
    低调做人,高调做事。
  • 相关阅读:
    DataTable
    asp.net2.0异步页面和异步web部件
    Ref 和Out 区别
    关于String str =new String("abc")和 String str = "abc"的比较
    MongoDB介绍及安装
    通过MongoDB的samus驱动实现基本数据操作
    SQL 联合索引 与 单一列的索引 比较
    C#字符串处理(String与StringBuilder)
    C#操作文件夹及文件的方法的使用
    常见的sql语句 注意点及用法【区分mysql 和Sqlserver】
  • 原文地址:https://www.cnblogs.com/Asimple/p/5699484.html
Copyright © 2011-2022 走看看