本文介绍: 终于是学完了,这个最短路我学了好几天,当然也学了别的算法啦,也是非常的累啊。话不多说下面看看最短路问题吧。最短路问题是有向图,要求的是图中一个点到起点的距离,其中我们要输入点和点之间的距离,来求最短路。
终于是学完了,这个最短路我学了好几天,当然也学了别的算法啦,也是非常的累啊。
话不多说下面看看最短路问题吧。
最短路问题是有向图,要求的是图中一个点到起点的距离,其中我们要输入点和点之间的距离,来求最短路。
下面分为几类题目:
单源汇最短路–>一个起点
1.边权为正数(dijkstra)
dijkstra算法的原理其实是拿第一个点与相连接的点进行距离上的比较,让距离最近的点作为下一个比较的第一个点,由于是边权为正数,所以不用去考虑负数和负环路。但是为啥我要分为两种类型,不是因为优化就是比朴素好,因为他们的存储数据不同,要存储的方式也是不同的,所以方法也是不同的。
(1)朴素 O(n^2) n点数m边数–>边数较多–>稠密图–>邻接矩阵
输入格式
输出格式
数据范围
输入样例:
输出样例:
(2)堆优化版 O(mlogn)–>边少–>稀疏图–>邻接表
输入格式
输出格式
数据范围
输入样例:
输出样例:
2.存在负边权
(1)Bellman-ford O(nm)
输入格式
输出格式
数据范围
输入样例:
输出样例:
(2)SPFA O(m),最坏O(nm)–>贪心
输入格式
输出格式
数据范围
输入样例:
输出样例:
多源汇最短路 Floyd O(n^3)–>dp
输入格式
输出格式
数据范围
输入样例:
输出样例:
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。