Constructing Roads
有N个村庄,编号从1到N,你应该建立一些道路,使每两个村庄可以相互连接。我们说,如果只有A和B之间有一条路,或者C村之间有一条C村,A和C之间有一条路,C和B之间有一条连接的道路,那么A和B两个村庄是相连的。
我们知道,一些村庄之间已经有一些道路,你的工作是建造一些道路,使所有的村庄都连接起来,所有道路的长度是
最小的。输入
第一行是整数N(3 +lt;=100),即村庄的数量。然后是 N 线,其中 i-th 包含 N 整数,而这些 N 整数的 j-th 是村庄 i 和村庄 j
之间的距离(距离应该是 [1,1000]内的整数),然后有一个整数 Q (0 +lt;= N * (N + 1) / 2)。然后是 Q 线,每行包含两个整数 a 和 b (1 +lt; a < b <] N), 这意味着 A 村和村庄 b 之间的道路已经建成。输出
您应该输出一条包含整数的线路,该整数是要修建的所有道路的长度,以便连接所有村庄,并且此值是最低值。Sample Input
3 0 990 692 990 0 179 692 179 0 1 1 2Sample Output
179Sponsor
实现代码:
#include<stdio.h>
#include<string.h>
#include<algorithm>
using

这篇博客介绍了一个利用Prim算法解决最小生成树问题的实例。内容包括输入村庄数量、已有道路距离矩阵以及已建成道路的信息,通过Prim算法找到连接所有村庄的最短路径总长度。代码中展示了Prim算法的实现,适用于稠密图,适用于解决此类图论问题。
最低0.47元/天 解锁文章
2273

被折叠的 条评论
为什么被折叠?



