还是畅通工程
Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 54905    Accepted Submission(s): 24918

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

Hint

Huge input, scanf is recommended.

/**
这道题是求一条连接各个连通区域的线使其距离最短
算法:prim
**/

可以参照:

http://www.cnblogs.com/GetcharZp/p/8944400.html

C/C++代码实现

#include <iostream>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <stack>
#include <queue>
#define my_max 0x3f3f3f3f using namespace std; int n, my_map [][], a, b, c; int prim ()
{
int cnt = , pos = , my_weight [], my_book [] = {, };
for (int i = ; i <= n; ++ i)
{
if (! my_book [i])
{
my_weight [i] = my_map [pos][i];
}
}
for (int i = ; i < n; ++ i)
{
int my_min = my_max;
for (int j = ; j <= n; ++ j)
{
if (!my_book [j] && my_min > my_weight [j])
{
pos = j;
my_min = my_weight [j];
}
}
cnt += my_min;
my_book [pos] = ; // 标记已连通的所用点
for (int j = ; j <= n; ++ j) // 对未被标记的点求其到已标记点的最短距离
{
if (!my_book [j] && my_weight [j] > my_map [pos][j])
{
my_weight [j] = my_map [pos][j];
}
}
}
return cnt ;
} int main ()
{ while (scanf ("%d", &n), n)
{
int N = n * (n - ) / ;
for (int i = ; i < N; ++ i)
{
scanf("%d%d%d", &a, &b, &c);
my_map [a][b] = my_map [b][a] = c;
}
printf ("%d\n", prim ());
}
}

最新文章

  1. C#设计模式-原型模式
  2. 几种Linux 查询外网出口IP的方法
  3. oracle函数listagg的使用说明(分组后连接字段)
  4. Codeforces Round #303 (Div. 2) D 贪心
  5. Linq 多条件连接
  6. shell算术运算与进制运算
  7. JQuery的第一天实战学习
  8. bzoj1043
  9. c# 使用ChartDirector绘图的一些个人体会
  10. winform(C#)拖拽实现获得文件路径
  11. CSS3控制元素排列
  12. 把事务封装成类似Serializable用法的特性
  13. O(nlogn)算法,最长上升子序列,,非动规
  14. DevOps/TestOps概念
  15. 20175316盛茂淞 2018-2019-2 《Java程序设计》第6周学习总结
  16. webpack中babel配置 --- runtime-transform和babel-pollfill
  17. 致备战noip2018的勇士
  18. Build step &#39;Execute shell&#39; marked build as failure解决
  19. linux中断申请之request_threaded_irq【转】
  20. 【转载】CMarkup函数说明

热门文章

  1. PHP array_pop
  2. [牛客网NOIP赛前集训营-普及组(第二场)]D-合法括号序列
  3. .NET Core ORM 类库Petapoco中对分页Page添加Order By对查询的影响
  4. HDU 6607 Time To Get Up(状态压缩+枚举)
  5. django1-环境搭建
  6. Java中常用的四种线程池
  7. Spring Boot Security And JSON Web Token
  8. vue 开发插件流程
  9. github实用的搜索小技巧
  10. 【原创】基于.NET的轻量级高性能 ORM - TZM.XFramework 之优雅增删改