初见SPFA时,直接认成了优先队列优化的Dijkstra,经过几位大佬的指点,我终于明白了他们的差异。

  Dijkstra是保证已经出队过的点不再入队,SPFA是已经在队列中不再入队。比较起来,SPFA写起来更加方便,空间复杂度相同,时间复杂度,目前我认为差不多的。

  目前正在思考SPFA的正确性(当然是对的,只是我还没有想明白)。

  模板:

    

#include<iostream>
#include<queue>
#include<vector>
using namespace std;
const int inf=2100000000;
int book[100];
int main()
{int n,m;vector<int>u[100];vector<int>w[100];cin>>n>>m;int x,y,z;for(int i=0;i<m;i++){cin>>x>>y>>z;u[x].push_back(y);u[y].push_back(x);w[x].push_back(z);w[y].push_back(z);}queue<int>q;q.push(1);int dis[100];fill(dis,dis+n+1,inf);dis[1]=0;book[1]=0;while(!q.empty()){int t=q.front();q.pop();book[t]=0;for(int i=0;i<u[t].size();i++){if(dis[u[t][i]]>dis[t]+w[t][i]){dis[u[t][i]]=dis[t]+w[t][i];if(!book[u[t][i]]){q.push(u[t][i]);book[u[t][i]]=1;}}}}for(int i=1;i<=n;i++){cout<<dis[i]<<endl;}
}

  不过,弱鸡还是想问一句,那这个算法和队列优化的Bellman-Ford有什么区别?

  恕我直言,这个SPFA除了解决负权边,其他的方面真的比不上Dijkstra。

转载于:https://www.cnblogs.com/ZGQblogs/p/9113388.html

最短路算法模板--SPFA相关推荐

  1. 【阿良的算法之路】图论最短路算法模板

    图论: [阿良的算法之路]图论最短路算法模板 [模板]dirjkstra单源最短路径 [模板]Bellman-Ford多源最短路 [模板]Spfa求最短路 [模板]Spfa判断负环 [模板]Floya ...

  2. 疯子的算法总结(八) 最短路算法+模板

    Dijkstra:适用于权值为非负的图的单源最短路径,用斐波那契堆的复杂度O(E+VlgV) BellmanFord:适用于权值有负值的图的单源最短路径,并且能够检测负圈,复杂度O(VE) SPFA: ...

  3. ACM-ICPC 2018 沈阳赛区网络预赛 D. Made In Heaven (K短路算法模板)

    题意 : 求第k短路的权值是否超过T(权值) 解法: 网上随便找的一个求K短路的算法模板套弄一下即可 (模板要好,不然邻接表存图会TLE , 网上换了两个模板才AC的) AC代码: #include& ...

  4. 详解最短路算法模板(dijkstra+floyd+spfa)

    1.Floyd_Warshall算法 核心思路:d[i][j] = min{d[i][j], d[i][k] + d[k][j]} 从i到j有两种路径,经过k点或是不经过k点,所以我们枚举k即可求所有 ...

  5. ACM算法模板总结(分类详细版)

    本文模均引用于y总的算法模板,网址:AcWing (转载请注明出处,本文属于持续更新ing.......biubiubiu......) 本人码风比起y总真的差远了,所以敲一遍后,还是想把y总的搬上来 ...

  6. 单源最短路 SPFA 算法模板

    简介 在图论中,最短路是十分重要的一部分,在很多问题中都有涉及 而现在所讲的 SPFA 算法是十分优秀的算法,时间复杂度为 O(k∗E)O(k*E) 其中 EE 是图的边数,而 kk 是一个常数,一般 ...

  7. ACM算法--spfa算法--最短路算法

    求单源最短路的SPFA算法的全称是:Shortest Path Faster Algorithm.      SPFA算法是西南交通大学段凡丁于1994年发表的.     从名字我们就可以看出,这种算 ...

  8. (最短路径算法整理)dijkstra、floyd、bellman-ford、spfa算法模板的整理与介绍

    这一篇博客以一些OJ上的题目为载体.整理一下最短路径算法.会陆续的更新... 一.多源最短路算法--floyd算法 floyd算法主要用于求随意两点间的最短路径.也成最短最短路径问题. 核心代码: / ...

  9. hihocoder1093 SPFA算法模板

    一:背景 SPFA(Shortest Path Faster Algorithm)算法,是西南交通大学段凡丁于 1994 年发表的,其在 Bellman-ford 算法的基础上加上一个队列优化,减少了 ...

最新文章

  1. python list索引_Python按照索引访问list
  2. 【Groovy】Groovy 动态语言特性 ( Groovy 中函数实参自动类型推断 | 函数动态参数注意事项 )
  3. php链接中二维数组传参数,JS用POST怎么传送二维数组给PHP
  4. JS实现sleep功能 JS遍历document对象
  5. 方法 手写promise_JS探索-手写Promise
  6. 数据结构 5-0 树与二叉树总结
  7. Java 开发者希望未来使用 Python 和 Go
  8. android垂直排列元素_元素的视图属性之client
  9. pyQt5 学习笔记(6)设置鼠标(光标)样式
  10. Devc++使用及debug超详解
  11. 乱舞之双刀--mhp2怪物猎人双刀攻略…
  12. 将现有android项目打包成aar包供第三方应用调用
  13. 整理的最新版的K8S安装教程,看完还不会,请你吃瓜
  14. Mongodb 设置账号密码
  15. bpmn不带网关的流程
  16. 百汇BCR:通过K线可以判断出外汇市场有哪些形态?
  17. android手机刷新率,终于知道为何苹果手机60Hz刷新率,却比大部分安卓的120Hz更强了...
  18. 微信公众号/小程序注册认证
  19. HihoCoder 1408 The Lastest Time
  20. 思维模型 罗森塔尔效应

热门文章

  1. [20190214]11g Query Result Cache RC Latches.txt
  2. 看似无参却有参-----JS中的函数传参
  3. Ubuntu Terminal Shortcut
  4. ASA/PIX: Load balancing between two ISP - options
  5. 验证redis的主从复制
  6. Cannot resolve corresponding JNI function
  7. android Set的遍历
  8. 设计模式---单例模式(多线程下的单例模式)
  9. RabbitMQ—流量控制之内存阈值
  10. 浅谈:数据结构之双链表结构与代码模拟双链表的实现