最小生成树kruskal算法

Posted qqq1112

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了最小生成树kruskal算法相关的知识,希望对你有一定的参考价值。

思路 :先把所有的边排个序,然后枚举所有的边(从小到大),如果当前边所连的两个点并没有在同一个集合里(这一可以用并查集来实现)(需要判断两个点是否已经连通,如果已经连通了,那么再用这条边连一遍就没有什么意义了),就连上这条边了。如果已经连了n - 1条边(n - 1条边就可以将一个图变为一个连通图),就直接退出,如果到最后都没有连上n - 1条边,当前图则不连通。

算法流程:

输入所有的边,并将他们存在一个结构体中

以边权大小值进行从小到大的排序

设定一个记录一共连了多少条边的k和一个存最小生成树边权总和的ans

枚举所有边,如果已经连了n - 1条边就退出

如果当前边的两个端点没有在同一个集合里,就把它们连起来并且ans的值加上此边的边权,k也加一

以上是关于最小生成树kruskal算法的主要内容,如果未能解决你的问题,请参考以下文章

图的最小生成树算法(Prim和Kruskal)

最小生成树之Kruskal算法和Prim算法

最小生成树算法Kruskal算法Prim算法切分定理贪心算法

[图] 最小生成树-Prime算法和Kruskal算法

最小生成树-Prim算法与Kruskal算法

最小生成树