Constructing Roads(prim算法)

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

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 2

Sample Output

179

Sponsor

实现代码:

 

#include<stdio.h>
#include<string.h>
#include<algorithm>

using 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值