最短路径专题2 最短距离-多终点(堆优化版)
最短路径专题2 最短距离-多终点(堆优化版)
原创 已于 2023-10-03 20:57:39 修改 · 粉丝可见 · 273 阅读 · 0 · 0 · 本内容遵循CC 4.0 BY-SA版权协议 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 GEO检测 · 编辑
文章链接:https://blog.csdn.net/hacker_51/article/details/133517000
题目:

样例:
cobol<br/>6 6 0<br/>0 1 2<br/>0 2 5<br/>0 3 1<br/>2 3 2<br/>1 2 1<br/>4 5 1<br/> |
|---|
| 0 2 3 1 -1 -1 |
|---|

思路:
根据题意,数据范围也小,也可以用 朴素版的Dijsktra 来做,朴素版的Dijsktra我做过了一遍了,可以看以一下我之前写的。
这次用堆优化,有时候数据范围大那么一点点的时候比如数据范围是

的时候,最坏情况下,朴素版的Dijsktra的时间复杂度是(1.5 * 10^5)^2,就会超时。
如果我们通过 提前排序知道哪个路径是最短路的点 ,即去掉一层循环,时间复杂度就是1.5 * 10^5,这样不会超时,就需要用到 堆来排序我们每个点最短距离,并且该点如果到达过,就寻找下一个最短路径的,由于数据范围较大,用不了了邻接矩阵的方式,我们只能用邻接表来实现了。
代码详解如下:
1 | |
最后提交:

觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭
wechat pay
ali pay
最短路径专题2 最短距离-多终点(堆优化版)
http://blog.angindem.cn/2023/10/03/Angindem-CSDN博客/081_81/