SPFA 算法是 Bellman-Ford算法 的队列优化算法的别称,通常用于求含负权边的单源最短路径,以及判负权环。SPFA 最坏情况下复杂度和朴素 Bellman-Ford 相同,为 O(VE);
我个人感觉spfa算法和堆优化的dijkstra算法算是有点相似的,只不过是dijkstra用的是优先队列,spfa用的是普通队列,spfa还有一个区别于dijkstra的是,spfa每个点可能遍历不止一次,而dijkstra每个点只需要遍历一次,并且spfa还适用于图中存在负权边的情况,spfa相比于dijkstra和bellman-ford还是毕竟全能的。
代码模板:
1 #include
2 #include
3 #include
4 #include
5 #include