1. 邻接矩阵

 1 int cost[MAX_V][MAX_V]; //assume cost[u][v]>0
 2 int d[MAX_V];
 3 bool used[MAX_V];
 4 void Dijkstra(int s, int t, int V){
 5     for(int i=1; i<=V; i++)
 6         used[i]=false, d[i]=INT_MAX, pre[i]=0;
 7     d[s]=0;
 8     while(true){
 9         int u=-1;
10         for(int v=1; v<=V; v++){
11             if(!used[v]&&(u==-1||d[v]<d[u])) u=v;
12         }
13         if(u==-1||u==t) break;
14         used[u]=true;
15         for(int v=1; v<=V; v++){
16             if(!cost[u][v]||used[v]) continue;
17             if(d[v]>d[u]+cost[u][v])
18                 d[v]=d[u]+cost[u][v], pre[v]=u;
19         }
20     }
21 }

2.邻接表

 1 #define X first
 2 #define Y second
 3 typedef pair<int, int> pii;
 4 typedef vector<pii> vpii;
 5 vpii G[MAX_V];
 6 int d[MAX_V];
 7 bool used[MAX_V];
 8 void Dijkstra(int s, int t, int V){
 9     for(int i=1; i<=V; i++)
10         used[i]=false, d[i]=INT_MAX, pre[i]=0;
11     d[s]=0;
12     while(true){
13         int u=-1;
14         for(int v=1; v<=V; v++){
15             if(!used[v]&&(u==-1||d[v]<d[u])) u=v;
16         }
17         if(u==-1||u==t) break;
18         used[u]=true;
19         for(int i=0; i<G[u].size(); i++){
20             int &v=G[u][i].X, &c=G[u][i].Y;
21             if(used[v]) continue;
22             if(d[v]>d[u]+c)
23                 d[v]=d[u]+c, pre[v]=u;
24         }
25     }
26 }

转载于:https://www.cnblogs.com/Patt/p/4676402.html

最短路之Dijkstra算法相关推荐

  1. 最短路和次短路问题,dijkstra算法

    1 /* 2 *题目大意: 3 *在一个有向图中,求从s到t两个点之间的最短路和比最短路长1的次短路的条数之和; 4 * 5 *算法思想: 6 *用A*求第K短路,目测会超时,直接在dijkstra算 ...

  2. HDU2544 最短路【Dijkstra算法】

    最短路 Time Limit: 5000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  3. 【单源最短路】Dijkstra算法求最短路

    题目描述 给定一个 n 个点 m 条边的有向图,图中可能存在重边和自环,所有边权均为正值. 请你求出 1 号点到 n 号点的最短距离,如果无法从 1 号点走到 n 号点,则输出 −1. 输入格式 第一 ...

  4. 单源最短路之Dijkstra算法代码模板

    常用算法代码模板总结 目录 注意事项 数组定义 实现步骤 练习例题:Dijkstra求最短路 注意事项 用来求单源最短路 所有边权都是正数,时间复杂度O(n^2) 可通过堆优化达到时间复杂度为O(ml ...

  5. hdu 2112 HDU Today 最短路(Dijkstra算法)

    HDU Today                                                                 Time Limit: 15000/5000 MS ...

  6. 【数据结构笔记24】单源最短路(迪克斯拉Dijkstra算法),多源最短路(弗洛伊德Floyd算法)

    本次笔记内容: 7.1.1 概述 7.1.2 无权图的单源最短路 7.1.3 有权图的单源最短路 7.1.3-s 有权图的单源最短路示例 7.1.4 多源最短路算法 文章目录 最短路径问题 最短路径问 ...

  7. 图论-最短路Dijkstra算法详解超详 有图解

    整体来看dij就是从起点开始扩散致整个图的过程,为什么说他稳定呢,是因为他每次迭代,都能得到至少一个结点的最短路.(不像SPFA,玄学复杂度) 但是他的缺点就是不能处理带负权值的边,和代码量稍稍复杂. ...

  8. dijkstra算法matlab程序_编程习题课 | 用最短路算法为你的小地图导航

    简介:路网拓扑的正确导入方式,运筹学算法的完整实战案例,最详细的代码讲解与分享. 引言:在研究路径选择和流量分配等交通问题时,常常会用到最短路算法.用最短路算法解决交通问题存在两个难点:一.算法的选择 ...

  9. 单源最短路——dijkstra算法

    Dijkstra算法 1.定义概览 Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止. 问 ...

最新文章

  1. arduino跑python,尝试在我的Arduino和stu上执行Python3.7.2中的代码
  2. 等比例缩放html5页面,css中如何做到容器按比例缩放
  3. CentOS7修改网卡名称为eth格式
  4. 修改VS2010生成的dll文件中的内容
  5. JavaScript中短时间高频次触发事件的优化
  6. c语言中将函数指针作为形参_在C中将有效指针作为NULL指针
  7. 在ubuntu 12.04上安装tomcat 7.40
  8. tcp 组播_深入了解TCP/IP协议
  9. bzoj 4883 [Lydsy1705月赛]棋盘上的守卫——并查集(思路!)
  10. guava 工具类及代码
  11. 语义分割系列5-Pspnet(pytorch实现)
  12. C语言图形库——EasyX基本贴图
  13. 大一c语言课设之图书管理系统
  14. 360度全景图是如何生成的?
  15. Apache的Order Allow,Deny 配置详解
  16. ChatGPT深度体验记录,期待GPT-4(测试各领域知识,正常聊天,写代码,写诗歌,模拟人格,机器翻译,语法改错等)
  17. MP4和HR-HDTV压制教程
  18. 中国学术会议(2009)---002
  19. 编程之美 烙饼问题 java实现(检测状态是否出现过)
  20. [豆瓣9.2]梯利的西方哲学史为入门级作品中的最佳推荐《西方哲学史-增补修订版》(唯一带索引的版本)...

热门文章

  1. Gitlab部署和汉化以及简单运维
  2. 【Camera专题】Qcom-高通OTP完全调试指南-上
  3. JS函数表达式——函数递归、闭包
  4. 共享内存简介和mmap 函数
  5. AutoCAD .NET API 之——DimStyleTableRecord 的属性列表
  6. hibernate和jdbc的优缺点,概述
  7. 关于spring事务管理
  8. 大叔手记(16):分析URL Routing和URL Rewriting两者之间的不同
  9. Vue 组件库 HeyUI@1.19.0 发布,新增 Icon 图标
  10. shell脚本将本地docker镜像push到阿里云镜像仓库