SPFA即shotest path faster algorithm,由意思就可以看出该算法效率比较高。

其实SPFA就是bellman-ford算法的一个优化。

具体做法是用一个队列保存待松弛的点,然后对于每个出队的点依次遍历每个与他有边相邻的点(用邻接表效率较高),如果该点可以松弛并且队列中没有该点则将它加入队列中,如此迭代直到队列为空。

据说平均效率是O(E),可见对边稀疏的图用此算法效果是相当可观的。

 

若要判负环路,则记录一个点的入队次数,若超过边数,则有负权环。

 

SPFA算法模版+邻接表实现#include <iostream>
SPFA算法模版+邻接表实现#include 
<queue>
SPFA算法模版+邻接表实现
using namespace std;
SPFA算法模版+邻接表实现
SPFA算法模版+邻接表实现
const long MAXN=10000;
SPFA算法模版+邻接表实现
const long lmax=0x7FFFFFFF;
SPFA算法模版+邻接表实现
SPFA算法模版+邻接表实现typedef 
struct  
}

相关文章: