SPFA算法 一.算法简介 SPFA(Shortest Path Faster Algorithm)算法是求单源最短路径的一种算法,它是Bellman-ford的队列优化,它是一种十分高效的最短路算法。 很多时候,给定的图存在负权边,这时类似Dijkstra等算法便没有了用武之地,而Bellman- ...
分类:
编程语言 时间:
2018-03-28 22:01:47
阅读次数:
481
SPFA算法主要用来解决存在负边权的单源最短路情况(但不能有负环!!!)一个简单的方法判断是否有没有负环可以通过判断是否有一个节点是否频繁进出队列。 以下内容转自https://blog.csdn.net/xunalove/article/details/70045815 求单源最短路的SPFA算法 ...
分类:
编程语言 时间:
2018-03-27 22:25:32
阅读次数:
305
题意:给你n个点,m条边,一个起点s,一个终点t的无向图,问在某两个点之间加一条边,不改变s到t的最短路径的值的加法有多少种,所有点一定连接; 思路:首先,默认相邻两点的权值都为1,会改变值的情况有: 从s出发,算出s的单源最短路dist,如果dist[x]+1<dist[t]; 从t出发,算出t的 ...
分类:
其他好文 时间:
2018-03-22 22:31:29
阅读次数:
187
1.图的DFS 邻接矩阵版: 领接表版: 2.图的BFS 邻接矩阵版: 领接表版: 3.单源最短路径 Dijkstra (适合无负权路径) 两个关键: 集合S存放已被访问的结点,用 bool vis[] 来实现 int d[] 表示起点 s 到达顶点 Vi 的最短距离 集合S存放已被访问的结点,用 ...
分类:
编程语言 时间:
2018-03-21 14:01:55
阅读次数:
193
要获得带权图中任意两点之间的最短距离,可以通过多次调用求解单源最短路径的算法来实现。但floyd算法来实现会更简单。 算法步骤: 假设图由邻接矩阵存放,通过二维数组dis[maxN][maxN]给出一张有向或者无向图,dis[i][j]代表i到j的距离,没有直接连通的路径的话就初始化为无限大,用代指 ...
分类:
编程语言 时间:
2018-03-10 15:56:21
阅读次数:
191
迪杰斯特拉算法用于求解单源最短路问题,能求解出从一个点出发到剩余所有节点的最短距离。 原理: 使用贪心选择,将全部节点分为两部分,已经找出最短路径的点和没有为找出最短路径的点,初始情况下源点为唯一一个找出最短距离的点,每次从未找出最短路径的点中选中距离源点最近的点设置为已经找到最短路径的点并记录下相 ...
分类:
编程语言 时间:
2018-03-10 15:51:49
阅读次数:
259
题面: 传送门 思路: 既然最后一条边不能走,那么就一定是换了一条路,一条不经过这最后一条边的路 如果想要这条路最短,那么其在路上一定尽可能多地走了最短路径 因此,我们对这张图跑一遍从1开始的单源最短路,并建立出最短路径树 那么新的路径(1->u)一定是这样构成的:(1->v)+edge(v,w)+ ...
分类:
其他好文 时间:
2018-02-21 20:28:02
阅读次数:
133
1 #include <cstring> 2 #include <cstdio> 3 #include <iostream> 4 #include <queue> 5 #define lop(i,a,b) for(register int i=a;i<=b;++i) 6 const int N = ...
分类:
其他好文 时间:
2018-02-18 10:33:21
阅读次数:
177
上一篇博文我们提到了图的最短路径问题:http://www.cnblogs.com/mm93/p/8434056.html。而最短路径问题可以说是这样的一个问题:路已经修好了,该怎么从这儿走到那儿?但是在和图有关的问题中,还有另一种有趣的问题:修路的成本已经知道了,该怎么修路才能尽可能节约成本,同时 ...
分类:
其他好文 时间:
2018-02-10 11:24:02
阅读次数:
181
(1)Dijkstra算法 1.算法时间复杂度:O(N²) 2.算法特点: 该算法是用来计算从一个点到其他所有点的最短路径算法,也是一种单源最短路径算法。该算法不能处理存在负边权的情况。 3.算法描述 起点:s dis[v]:s到v的最短路径 pre[v]:v的前驱节点 初始化:dis[v]=∞(v ...
分类:
其他好文 时间:
2018-02-07 00:42:24
阅读次数:
173