PTA 最小生成树-Prim算法(从任意顶点开始) python

本文介绍了使用Prim算法解决最小生成树问题,特别是在‘村村通’工程中的应用。算法从任意一个顶点开始,逐步构建连接所有村庄的最低成本路网。输入包括村庄数量和道路数,输出为按特定顺序排列的最低成本道路。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

某地对偏远地区实行“村村通”工程,目标是使整个地区任何两个村落间都可以实现快速交通(但不一定有直接的快速道路相连,只要互相间接通过快速路可达即可)。现得到拟修建道路的费用,现请你编写程序,计算出全地区畅通需要的最低成本。

输入格式:

输入的第一行给出村庄数目N (1≤N≤20)和拟修建的道路数M
接下来的M行对应修建每条村庄间道路的成本,每行给出3个正整数,分别是两个村庄的编号(从1编号到N),此两村庄间道路的成本。

输出格式:

输出需修建的道路,按prim算法从编号s开始得到的顺序,输出每条路,每行输出一条道路,形式如:道路1编号,道路2编号,费用。(编号小的放前面,编号大的放后面,逗号为英文状态下的逗号)

输入样例:

4 6 3
1 2 1
1 3 4
1 4 1
2 3 3
2 4 2
3 4 5

输出样例:

2,3,3
1,2,1
1,4,1

 

def Prim(mgrap, k):
    res = []
    candid = [i for i in range(len(mgrap)) if i != k-1]
    select = [k-1]
    while len(candid) > 0:
        n, m, mid = 0, 0, 1000
        for i in select:
            for 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值