C++实现dijkstra单源最短路径算法-邻接表+优先队列
dijkstra单源最短路径算法不允许边权值为负,适用的图范围可以很大。
代码如下:
#include <iostream>
#include <queue>
#include <vector>
#include <string>
using namespace std;
const int N = 1e8;
bool done[N];
int dis[N];
const int INF = 1 << 30;
int n, m;struct edge {int from;int to;int w;
};
vector<edge>e[N];struct node {int id;int dis;friend bool operator<(const node &a, const node &b) {return a.dis > b.dis;}
};void dijkstra(int s) //s为起点
{priority_queue<node>q;memset(done, 0, sizeof(done));for (int i = 1; i <= n; i++)dis[i] = INF;memset(done, 0, sizeof(done));dis[s] = 0;q.push({s, dis[s]});while (q.size()) {node t = q.top();q.pop();if (done[t.id])continue;done[t.id] = true;for (int i = 0; i < e[t.id].size(); i++) {edge y = e[t.id][i];if (done[y.to])continue;if (dis[y.to] > y.w + t.dis) {dis[y.to] = y.w + t.dis;q.push({y.to, dis[y.to]});}}}
}int main() {while (cin >> n >> m, n, m) {for (int i = 1; i <= n; i++)e[i].clear();while (m--) {int a, b, c;cin >> a >> b >> c;e[a].push_back({a, b, c});e[b].push_back({b, a, c});}int start;cin >> start;//起点dijkstra(start);int no;while (cin >> no, no)//询问no点到起点的距离{cout << dis[no] << endl;}}return 0;
}
C++实现dijkstra单源最短路径算法-邻接表+优先队列相关推荐
- Dijkstra单源最短路径算法
这里写目录标题 一.算法原理 二.MATLAB实现 三.参考文献 一.算法原理 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶 ...
- Dijkstra 单源最短路径算法 Java实现
Dijkstra 单源最短路径算法 Java实现 算法导入 算法核心 复杂度分析 时间复杂度 空间复杂度 代码实现 参考资料 结尾 算法导入 在图论中,求最短路径有一个经典的算法 Dijkstra算法 ...
- AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_A Single Source Shortest Path In ...
- AOJ GRL_1_A: Single Source Shortest Path (Dijktra算法求单源最短路径,邻接表)
题目链接:http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=GRL_1_A Single Source Shortest Path In ...
- C++实现有向图最短路径-Dijkstra单源最短路径算法
#include <iostream> using namespace std; #define INFINE 99999999//假装我是无穷大 const int N = 1010; ...
- 单源路径分支界限java_java单源最短路径算法
. .. .. . 单源最短路径的 Dijkstra 算法: 问题描述: 给定一... 并 应用贪心法求解单源最短路径问题.环境要求对于环境没有特别要求.对于算法实现,可以自由选择 C, C++, J ...
- 图论-单源最短路径算法(拓扑,Dijkstra,Floyd,SPFA)
前言 单源最短路径是学习图论算法的入门级台阶,但刚开始看的时候就蒙了,什么有环没环,有负权没负权,下面就来总结一下求单源最短路径的所有算法以及其适用的情况. 单源最短路径 设定图中一个点为源点,求其他 ...
- 四种不同单源最短路径算法性能比较
四种不同单源最短路径算法性能比较 一.最短路径问题描述 单源最短路径描述:给定带权有向图G=(V,E),其中每条边的权是非负实数.另外,还给定V中的一个顶点,称之为源.现在要计算从源到其他各顶点的 ...
- Bellman-Ford 单源最短路径算法
Bellman-Ford 单源最短路径算法 Bellman-Ford 算法是一种用于计算带权有向图中单源最短路径(SSSP:Single-Source Shortest Path)的算法.该算法由 R ...
最新文章
- qt打开数据库mysql数据库文件怎么打开_qt打开数据库mysql数据库文件
- 我的简书两月记:数据可视化
- LSTM UEBA异常检测——deeplog里其实提到了,就是多分类LSTM算法,结合LSTM预测误差来检测异常参数...
- Windows上安装scapy
- 3-插入排序C实现(递增递减的简单转换)
- 定期存款可以提前取出来吗_定期存款、约定转存、自动转存和自己取出来转存有什么不同?...
- 类和对象编程(二):类访问修饰符
- [bzoj1791][ioi2008]Island 岛屿(基环树、树的直径)
- getdistance mysql_mysql 自定义函数获取两点间距离
- RS485/RS422接线图
- 1260.shift-2d-grid
- DoubleClick公司推出移动广告平台
- 【爬虫知识】浏览器开发者工具使用技巧总结
- 驱动设计思想(机制、策略、分离、分层)
- dry的原理_Dry Etch 工艺基本原理及良率剖析(经典讲解)
- redux中导入createStore中间有条线,解决方案及redux的使用。(react)
- 【开箱】B.FRIEND MK3机械式键盘!可换轴换灯,绝美双色金属底座!
- JS根据身份证号计算年龄
- lcg_magic算法笔记:冒泡排序
- lazarus中的try except
热门文章
- Android之JNI动态注册native方法和JNI数据简单使用
- Android之倍数提高工作效率的 Android Studio 奇技
- 【C语言简单说】十:小结
- python typeerror* wants int_python-TypeError:’int’对象是不可迭代的?
- 嵌入式开发linux工具,嵌入式Linux开发入门之MfgTool工具的使用
- 揭开不一样的世界,这5部纪录片绝对不能错过!
- “妈,你当年咋看上我爸的?”网友晒爸妈结婚照,笑抽了!
- 掌握神经网络,入门深度学习
- 程序猿专属成语 get√
- 史上最惨锦鲤即将来袭!奖品堪比5年高考3年模拟!