在存在权值相等的边时,最小生成树可能有多个。话不多说,求它个数的方法如下:
先用Prim生成最小树,同时记录边的关系。用并查集表示//不要压缩路径
让每个元素都指向它的父亲节点。
找出权值相同的边,去除树上的这条边,一棵树就被砍成了两颗,然后看加上另一条是否能连接这科树
方法就是这样,复杂度O(|E|log|E|)
具体问题:
输入
第一行:T //代表T组数据
每组数据:
- V E //代表V个顶点 E条边
- E行x y z//代表节点x到y的边长
输出
最小生成树的个数
代码