最短路,模版

最短路一直是图论中比较热门的问题,因而求最短路的算法也是比较多的(在这里我就不给大家证明了,百度一大把),问题的解法一多有些人就摸不清头脑了,到底该用哪个算法呢?

让我们先总结一下4个常用的算法:

1.Bellman-Ford算法

2.Dijkstra算法(之后简称为DK最短路算法)

3.Floyd-Warshall算法

4.SPFA算法

那么实际问题中我们该选择哪种算法才是比较合适的呢?这正是我要向大家陈述的。这里就给大家做出这样一个分类吧。直接给出一个明了的图吧。

最短路,模版_第1张图片

到了这里相信什么时候该用哪个算法应该是比较明了了的,接下来给出我的4个算法的模版,注意有的为有向图的代码,有的为无向图代码,自行修改一下便是(有各种优化版本哦):


1.Bellman-Ford算法(存储每一条边的信息即可):点击查看代码

2.Dijkstra算法(邻接矩阵储存,无优化版):点击查看代码

     Dijkstra算法(邻接表储存,优先队列优化版):点击查看代码

3.Floyd-Warshall算法(邻接矩阵储存,这里只给出核心代码):点击查看代码

4.SPFA算法(邻接表储存,无优化版):点击查看代码

   SPFA算法(邻接表储存,SLF和LLL优化版):点击查看代码


你可能感兴趣的:(C++,ACM,图论,最短路模版)