最小生成树----Kruskal 克鲁斯卡尔算法 c++

本文为克鲁斯卡尔算法模板讲解
首先原理,后部讲解代码

原理介绍:

克鲁斯卡尔算法用于一个无向图,每条边都标有权值,求最小生成树,最小生成树的字面解释就是将图上所有节点连通且不成环,最终的每条边的权值之和是最小。

文字描述:首先将所有边去除,只剩下互不相连的点,然后把去除的边,按照权值大小进行排序,从小到大排序,从小到大遍历这些边,当遍历一条边满足:边的两个顶点原本互不连通,则把这条边加入到最小生成树,并且这条边的两个顶点因此而连通了,附带的顶点也顺带连通了。不断重复这样的操作,直到选择了n-1条边(n是顶点数目)

核心算法:1 :用结构体存储边的权值和两个顶点
2:用并查集实现检测两个点是否连通,顺带连通功能
3:重写快速排序函数

这是结构体以及快速排序函数(对权值从小到大排序)
并查集

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值