SPFA 快速最短路算法 队列优化

#include<bits/stdc++.h>
using namespace std;
const int maxn=205;
vector<pair<int,int> >E[maxn];//表示边权
int n,m;
int d[maxn];//起点到终点的距离
int inq[maxn];//表示点是否存在于队列
void init()
{for(int i=0;i<maxn;i++)E[i].clear();for(int i=0;i<maxn;i++)inq[i]=0;for(int i=0;i<maxn;i++)d[i]=1e9;
}int main()
{while(cin>>n>>m){init();for(int i=0;i<m;i++){int a,b,x;cin>>a>>b>>x;//城镇A和城镇B之间有一条长度为X的双向道路。E[a].push_back(make_pair(b,x));E[b].push_back(make_pair(a,x));}int s,t;cin>>s>>t;queue<int> Q;Q.push(s);d[s]=0;//起点到起点的距离为 0 inq[s]=1; while(!Q.empty()) {int now=Q.front();Q.pop();inq[now]=0;for(int i=0;i<E[now].size();i++){int v=E[now][i].first;if(d[v]>d[now]+E[now][i].second){d[v]=d[now]+E[now][i].second; if(inq[v]==1)    continue;inq[v]=0;Q.push(v);}}}if(d[t]==1e9) printf("-1\n");else printf("%d\n",d[t]);}return 0;
}

Dijkstra算法:通过优先队列,对SPFA优化

#include<bits/stdc++.h>
using namespace std;
const int maxn=205;
vector<pair<int,int> >E[maxn];//表示边权
int n,m;
int d[maxn];//起点到终点的距离 void init()
{for(int i=0;i<maxn;i++)E[i].clear();for(int i=0;i<maxn;i++)d[i]=1e9;
}int main()
{while(cin>>n>>m){init();for(int i=0;i<m;i++){int a,b,x;cin>>a>>b>>x;//城镇A和城镇B之间有一条长度为X的双向道路。E[a].push_back(make_pair(b,x));E[b].push_back(make_pair(a,x));}int s,t;cin>>s>>t;priority_queue<pair<int,int> > Q;//优先队列默认返回最大值d[s]=0;//起点到起点的距离为 0 Q.push(make_pair(-d[s],s));while(!Q.empty()) {int now=Q.top().second;Q.pop();for(int i=0;i<E[now].size();i++){int v=E[now][i].first;if(d[v]>d[now]+E[now][i].second){d[v]=d[now]+E[now][i].second; Q.push(make_pair(-d[v],v));}}}if(d[t]==1e9)    printf("-1\n");else printf("%d\n",d[t]);}return 0;
}

HDU 1874 SPFA算法Dijkstra算法相关推荐

  1. 计算机网络最短路径路由选择,最短路径算法Dijkstra算法在路由选择中的应用.pdf...

    最短路径算法Dijkstra算法在路由选择中的应用.pdf 计算机与网络 江苏联合职业技术学院徐州机电工程分院 王恒青 江苏联合职业技术学院徐州生物工程分院 宋如敏 [摘要]本文介绍了路由算法的设计目 ...

  2. 最短路算法 :Bellman-ford算法 Dijkstra算法 floyd算法 SPFA算法 详解

     本文链接   :http://www.cnblogs.com/Yan-C/p/3916281.html . 在本文中因为邻接表在比赛中不如前向星好写,而且前向星效率并不低所以,本文的代码 存图只 ...

  3. 图论算法》关于SPFA和Dijkstra算法的两三事

    本来我是想把这两个算法分开写描述的,但是SPFA其实就是Dijkstra的稀疏图优化,所以其实代码差不多,所以就放在一起写了. 因为SPFA是Dijkstra的优化,所以我想来讲讲Dijkstra. ...

  4. dijkstra邻接表_掌握算法-图论-最短路径算法-Dijkstra算法

    如果图是赋权图,那么问题就变得更困难了不过我们仍然可以使用来自无权情形时的想法. 我们保留所有与前面相同的信息.因此,每个顶点或者标记为Known的,或者标记为Unknown的.像之前一样,对每一个顶 ...

  5. 牛客网 最短路 Floyd算法 Dijkstra算法 Java大数

    链接:https://www.nowcoder.com/questionTerminal/a29d0b5eb46b4b90bfa22aa98cf5ff17 来源:牛客网 最短路径 热度指数:2992 ...

  6. Floyd算法Dijkstra算法

    Floyd算法和Dijkstra算法 一.Floyd算法 1.简要介绍:Floyd算法又称插点法,是利用动态规划的思想寻找有权图多源点之间最短路径的算法,算法目的是寻找从点i到点j的最短路径. 2.步 ...

  7. 图论经典算法——Dijkstra算法

    1. 解决问题 目的是求某一顶点到其余各个顶点[最短路径]. 2. Dijkstra算法思想 假设一共有两个顶点集合 S 和 T ,集合 S 中存放图中已找到最短路径的顶点,集合 T 中存放图中的剩余 ...

  8. 【JAVA算法】图论算法 -- Dijkstra算法

    写在前面:     我也是一名java语言的爱好者,仅以此文作为学习的记录,对于文中出现的代码规范,代码格式,算法效率等问题,希望各路大神不吝赐教,在下感激不尽.同是学习的同学也同样希望互相交流,取长 ...

  9. 图论算法-dijkstra算法

    dijkstra算法 思想: 用于解决单源最短路问题,即给定有向图G和起点from,通过算法得到from到其他每个顶点的最短距离. 步骤: 设置集合selectedNode存放已被访问过的点,每次从未 ...

最新文章

  1. windows7 64位机上CUDA7.0配置及在VS2010中的简单使用举例
  2. 《CLR via C#》笔记——CLR的执行模型
  3. 2021年春季学期-信号与系统-第十二次作业参考答案-第一小题
  4. UVA11729突击战(汇报和执行任务)
  5. Python八种数据导入方法,你掌握了吗?
  6. Android SDK Manager 加载不出tools解决办法
  7. [Vijos 1143]三取方格数
  8. 51 Python - 装饰器 参数化装饰器——装饰器更通用
  9. 文件字符输入流 FileReader java
  10. pip下载慢的解决方法
  11. linux gpart 用法,gpart 使用笔记
  12. python读取matlab数据_两分钟搞定Python读取matlab的.mat数据
  13. 2021京东商城APP手机模板 HTML+CSS+JavaScript
  14. matlab遥感原理与应用,遥感原理与应用知识点概括考研.doc
  15. Android SVG矢量图/矢量动画、Vector和VectorDrawable矢量图及动画,减少App Size
  16. 记一次Windows 无法加载这个硬件的设备驱动程序。驱动程序可能已损坏或不见了。 (代码 39)
  17. 360全景倒车影像怎么看_360全景影像怎么看
  18. Windows SUS
  19. 【Java-数据类型】
  20. Normal Equation推导

热门文章

  1. BZOJ(8) 1053: [HAOI2007]反素数ant
  2. linux C 列出目录中的文件列表 包含文件的相关信息
  3. 按钮添加边框和边框色
  4. 宝石世界1.0游戏发布
  5. logistic regression中的cost function选择
  6. Microsoft Visual C++ Runtime Library Runtime Error的解决的方法
  7. SQL Server 2005学习笔记
  8. 记录今天学习SQL遇到的一个小问题
  9. 光环大数据spark文档_推荐大数据Spark必读书目
  10. html如何获取请求头变量的值。_手写一个静态资源中间件,加深了解服务器对文件请求的缓存策略...