MST (最小生成树)

本文介绍了如何利用Kruskal算法解决无向图的最小生成树问题。通过贪心策略,每次都选择当前边权最小的边,并利用并查集判断边的合法性,避免形成环。该算法首先对边按权重排序,然后逐条检查并加入合适的边,直到添加了n-1条边。代码实现虽未包含图片,但提供了详细的文字描述。
摘要由CSDN通过智能技术生成

我们有一个无向图,然后要求生成一棵边权之和最小的树

首先,我们可以暴力,枚举每一条边选不选,然后计算边权和,更新答案,必定会TLE,这是显然的;

那么我们需要一种较为高效的算法来解决这种问题,这时候,我们就可以学一下MST(最小生成树)的Kruskal算法了

这个算法用到了一些贪心的思想,就是我们每次选当前待选的边权最小的那条边,如果这条边符合性质,我们就把它加入到树中,否则,我们换下一条边,一直重复这个过程,知道我们加入了n-1条边(n为节点数);

那么显然我们是要排序的,根据边权大小由小到大排序,每次取出一条边,判断是否合法的方法是用并查集,如果两个端点在一个集合中,说明这两个点一定在此之前由一些更短的边在连接其它的点的时候将这两个点连入了一个集合,所以当前边是没必要选的,且不可以选,不然违反了树的性质,有了环,如果两个端点不在一个集合,我们就把这两个点连入一个集合,处理完当前的边后,继续下一条边,直至结束;

完整代码:

#include<iostream>
#include<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值