这里来简单介绍下SPFA算法。
1、SPFA算法是求解单源最短路径的,时间复杂度为0(kn),一般k<2。所以该算法高效。
2、以下的代码借助STL中的vector,用临界表来存储图的。
3、如果要输出一条最短路径对应的路线,我们可以用source[]表来记录。例如source[a]=b,
表示a的前驱为b。这样在执行完SPFA算法后,就会得到一张source表。然后从end向前一直,
找到start为止。就可产生一条路径了。当然,以上所说的只是比较简单的。比如要求在有多条
路径时打印经过节点最少的、字典序顺序小的。。。
4、SPFA算法不仅可以判断有向图、无向图任意两点之间是否有路径可达,还可以给出实际值。
5、一个关于SPFA算法的PPT,内容不错,免积分下载:SPFA算法简介
代码:
#include<iostream>
#include<vector>
#include<queue>
#include<stack>
#include<cstring>
using namespace std;
const int maxn=1001;
const int INF=0x7fffffff;
struct edge //边
{
int to;
int cost;
};
vector<edge> myV[maxn]; //利用临界表存储图
int numNode,numEdge;