Dijkstra模板求单源点最短路径
来源:互联网 发布:知乎911是美国自导自演 编辑:程序博客网 时间:2024/06/09 10:06
#include <iostream>using namespace std;const int maxnum = 100;const int maxint = 999999;// 各数组都从下标1开始int dist[maxnum]; // 表示当前点到源点的最短路径长度int prev[maxnum]; // 记录当前点的前一个结点int c[maxnum][maxnum]; // 记录图的两点间路径长度int n, line; // 图的结点数和路径数// n -- n nodes// v -- the source node// dist[] -- the distance from the ith node to the source node// prev[] -- the previous node of the ith node// c[][] -- every two nodes' distancevoid Dijkstra(int n, int v, int *dist, int *prev, int c[maxnum][maxnum]){ bool s[maxnum]; // 判断是否已存入该点到S集合中 for(int i=1; i<=n; ++i) { dist[i] = c[v][i]; s[i] = 0; // 初始都未用过该点 if(dist[i] == maxint) prev[i] = 0; else prev[i] = v; } dist[v] = 0; s[v] = 1; // 依次将未放入S集合的结点中,取dist[]最小值的结点,放入结合S中 // 一旦S包含了所有V中顶点,dist就记录了从源点到所有其他顶点之间的最短路径长度 // 注意是从第二个节点开始,第一个为源点 for(int i=2; i<=n; ++i) { int tmp = maxint; int u = v; // 找出当前未使用的点j的dist[j]最小值 for(int j=1; j<=n; ++j) if((!s[j]) && dist[j]<tmp) { u = j; // u保存当前邻接点中距离最小的点的号码 tmp = dist[j]; } s[u] = 1; // 表示u点已存入S集合中 // 更新dist for(int j=1; j<=n; ++j) if((!s[j]) && c[u][j]<maxint) { int newdist = dist[u] + c[u][j]; if(newdist < dist[j]) { dist[j] = newdist; prev[j] = u; } }}
阅读全文
0 0
- Dijkstra模板求单源点最短路径
- 单源点最短路径----Dijkstra算法
- 单源点最短路径(dijkstra算法)
- Dijkstra求解单源点最短路径
- Dijkstra 邻接矩阵 单源点最短路径
- 算法储备之Dijkstra算法求单源点最短路径
- 单源点最短路径Dijkstra算法的JAVA实现
- 单源点最短路径Dijkstra算法的JAVA实现
- 单源点最短路径算法(dijkstra)
- 单源点最短路径问题(Dijkstra算法)
- 单源点最短路径Dijkstra的java实现
- 单源点最短路径Dijkstra和Bellmanford
- 【数据结构】算法7.15 Dijkstra算法 单源点最短路径
- 单源点最短路径的Dijkstra算法
- 最短路径(Dijkstra算法)也就是单源点问题!
- 单源点最短路径Dijkstra方法实现
- dijkstra算法求解单源点最短路径
- 单源点最短路径
- SequenceInputStream 实现文件的切割与合并
- [Vue.js启航]——使用Vuex进行状态管理
- C# DataGridView添加新行的2个方法
- P1192 台阶问题
- leetcode[Largest Palindrome Product]
- Dijkstra模板求单源点最短路径
- 实参和形参
- Spring —— IOC控制反转
- dos命令窗口下下java命令提示找不到或无法加载主类
- spring mvc 和struts2的区别
- Android从普通类跳转到Activity
- js 定时数字跳动
- java Web项目中什么场景中会用到java多线程?
- CMake4:安装与测试