prim算法图解 prim算法和kruskal算法的区别)


昨天我们看了kruskal算法,今天我们换种算法来求。仍然是洛谷上的题目。

14856: 线路规划

时间限制: 1 Sec 内存限制: 128 MB

题目描述

有n 个村庄之间需要架设通信线路,使得任意两个村庄之间均可通信。两个村庄a, b 间可通信,当且仅当它们之间存在一条通信线路或者存在村庄c 使得a,c 和b,c 间均可通信。给出村庄之间架设通信线路的代价,求出最小的总代价。

输入

第一行包含两个整数n,m,分别表示村庄数量和可以架设通信线路的村庄对数。以下m 行,每行三个整数a,b,c,表示村庄a,b之间架设线路的代价为c(村庄从0 开始编号)。

输出

一个整数,最小总代价。

样例输入

3 30 1 11 2 12 0 3

样例输出

2

提示

对于50% 的数据,n<=100,m <=n^2

对于全部数据,1<=n<=10^5; n-1<=m<=10^5,所有代价均在[0, 10^6] 范围内,保证问题有解。

题目大意就是给n个点,m对长度,求一个最小生成树。

这个过程和Dijstra非常类似,也可以用堆优化。大家现在自己独立思考一下。这个算法和Dijstra有什么相同点?还有什么不同点?可以把你的答案放到评论区内!!

Prim堆优化的算法复杂度为O(E+VlgV)

我们再综合看一下Prim和Kruscal两个算法。其实两种算法的复杂度级别是差不多的。Kruscal需要并查集知识的前置,但Prim不需要。两者的核心思想其实都是贪心,只不过贪心所用的策略和方式不同。很难说孰优孰劣,所以大家针对不同的题型或者针对自己的个人喜好自行选用就行。举报


上一篇:网站项目开发与管理 web网站开发流程)

下一篇:高通手机处理器排名 高通目前最高的处理器)


蚂蚁钢琴网 2008-2025 www.somall.com.cn 皖ICP备2023010105号
大写数字 热点城市 热点地区 热点街道 热点时间 房贷计算器
钢琴调律 钢琴调音 钢琴调律价格
温馨提示:部分文章图片数据来源与网络,仅供参考!版权归原作者所有,如有侵权请联系删除!
违法和不良信息24小时举报热线:18056540210