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 ] : 存