首页 > 编程语言 > 详细

最小生成树kruskal算法

时间:2019-09-23 22:35:25      阅读:102      评论:0      收藏:0      [点我收藏+]

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

算法流程:

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

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

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

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

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

最小生成树kruskal算法

原文:https://www.cnblogs.com/qqq1112/p/11574876.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!