次小生成树 【总结】

本文介绍了如何在(N*2)的时间复杂度内求解次小生成树问题,通过结合Prime算法,利用MST中任意两点间最大权值边的数组记录,以及在Prim过程中更新MST,最后枚举不在MST的边判断是否存在替代关系,以确认MST是否唯一。
摘要由CSDN通过智能技术生成

MST - 最小生成树


引子:给你N个点以及M条边,问你MST是否唯一,若不唯一输出-1,否则输出MST的值。


通过 枚举 + 删边 + 再求MST 完全可以做到求解上述题目,但时间复杂度过高。这里介绍一种(N*2)的算法,是结合prime算法实现的。


算法核心思想:在prime求MST的过程中 用数组存储MST里面任意两点间的唯一的路中 权值最大的那条边的权值。最后枚举不在MST里面的边<i,,j>,判断<i,j>的权值 是否 和 MST里面 i 到 j 的最大权值相等,只要有一条边满足就可以说明MST不唯一。(因为我们可以用这条不在MST的边来 代替 在MST的边,这样MST肯定不唯一)



数组使用

prime 模版用到三个数组 low[] vis[] Map[][],不再详细解释。

MST[ i ][ j ] :  存

评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值