zoukankan      html  css  js  c++  java
  • HDU 1233 还是畅通工程

    还是畅通工程

    Problem 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
     
     
    最小生成树。
     1 #include <iostream>
     2 #include <stdio.h>
     3 #include <string.h>
     4 #define INF 0x3f3f3f3f
     5 using namespace std;
     6 const int N = 110;
     7 int G[N][N], vis[N], d[N];
     8 int n;
     9 int prim() {
    10     for(int i = 1; i <= n; i ++) vis[i] = 0, d[i] = INF;
    11     d[1] = 0;
    12     int res = 0;
    13     while(true) {
    14         int v = -1;
    15         for(int i = 1; i <= n; i ++) {
    16             if(!vis[i] && (v == -1 || d[v] > d[i])) v = i;
    17         }
    18         if(v == -1) break;
    19         res += d[v];
    20         vis[v] = 1;
    21         for(int i = 1; i <= n; i ++)
    22             d[i] = min(d[i], G[i][v]);
    23     }
    24     return res;
    25 }
    26 int main() {
    27     while(scanf("%d",&n)&&n) {
    28         for(int i = 1; i < N; i ++) {
    29             for(int j = 1; j < N; j ++) {
    30                 G[i][j] = (i==j ? 0: INF);
    31             }
    32         }
    33         for(int i = 1; i <= n*(n-1)/2; i ++) {
    34             int u, v, w;
    35             scanf("%d%d%d",&u,&v,&w);
    36             if(G[u][v] > w) {
    37                 G[u][v] = G[v][u] = w;
    38             }
    39         }
    40         printf("%d
    ",prim());
    41     }
    42     return 0;
    43 }
  • 相关阅读:
    《高性能MySQL》读书笔记--Schema与数据类型优化
    小程序从零开始 新手必看(2)
    小程序从零开始 新手必看(1)
    Web 前端
    摒弃 react-redux: 非侵入式状态共享实现
    Web 前端
    Web 前端
    Web 前端
    vue实现打印、批量打印
    JS脱敏带表情的字符串
  • 原文地址:https://www.cnblogs.com/xingkongyihao/p/7275899.html
Copyright © 2011-2022 走看看