最小生成树个数

当存在权值相等的边时,最小生成树可能不唯一。通过Prim算法生成最小树,结合并查集记录边的关系,找到权值相同的边,移除后判断能否通过其他边连接,以此计算最小生成树的个数。复杂度为O(E log E)。
摘要由CSDN通过智能技术生成

在存在权值相等的边时,最小生成树可能有多个。话不多说,求它个数的方法如下:

先用Prim生成最小树,同时记录边的关系。用并查集表示//不要压缩路径

这里写图片描述

让每个元素都指向它的父亲节点。

找出权值相同的边,去除树上的这条边,一棵树就被砍成了两颗,然后看加上另一条是否能连接这科树

这里写图片描述

方法就是这样,复杂度O(|E|log|E|)

具体问题:

输入

第一行:T //代表T组数据
每组数据:

  • V E //代表V个顶点 E条边
  • E行x y z//代表节点x到y的边长

输出

最小生成树的个数

代码

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值