最短路---dijsktra--邻接矩阵
1 const int MAXINT = 32767; 2 const int MAXNUM = 10; //点的个数 3 int dist[MAXNUM]; 4 int prev[MAXNUM]; 5 6 int A[MAXUNM][MAXNUM]; 7 8 void Dijkstra(int v0) 9 { 10 bool S[MAXNUM]; // 新建一个标记数组,判断是否已存入该点到S集合中; 11 int n=MAXNUM; 12 for(int i=1; i<=n; ++i) 13 { 14 dist[i] = A[v0][i]; //将该点的邻接矩阵复制到dist[]一维数组中; 15 S[i] = false; // 初始都未用过该点; 16 if(dist[i] == MAXINT) 17 prev[i] = -1; 18 else 19 prev[i] = v0; //记录该点的上一节点是现在处理的源点,如果不联通为-1; 20 } 21 dist[v0] = 0; //dist表示原点v0到该点的最短距离; 22 S[v0] = true; //将源点标记为已经访问; 23 for(int i=2; i<=n; i++) //循环n-1次,保证找到每一个点; 24 { 25 int mindist = MAXINT; //标记当前的最小距离,初始化为最大; 26 int u = v0; // 找出当前未使用的点j的dist[j]最小值 27 for(int j=1; j<=n; ++j) 28 if((!S[j]) && dist[j]<mindist) 29 { 30 u = j; // u保存当前邻接点中距离最小的点的号码 31 mindist = dist[j]; 32 } //找出了距离该源点最近的那个点,u记录了点的编号; 33 S[u] = true; 34 for(int j=1; j<=n; j++) 35 if((!S[j]) && A[u][j]<MAXINT) //找没有被使用过的点,且与u是联通的点; 36 { 37 if(dist[u] + A[u][j] < dist[j]) //在通过新加入的u点路径找到离v0点更短的路径 ;(如果该点距离原点的距离比从u点过度过来的距离长,则当前的最短路就改变) 38 { 39 dist[j] = dist[u] + A[u][j]; //更新dist 40 prev[j] = u; //记录前驱顶点 41 } 42 } 43 } 44 }
View Code
转载于:https://www.cnblogs.com/by-1075324834/p/4388919.html
最短路---dijsktra--邻接矩阵相关推荐
- 【USACO 2007 February Silver】农场派对
Description N(1<=N<=1000)头牛要去参加一场在编号为x(1<=x<=N)的牛的农场举行的派对.有M(1<=M<=100000)条有向道路,每条 ...
- 第十二届蓝桥杯2021年C++A组省赛题解
文章目录 注 考生须知 试题A:卡片 试题B:直线 题解 代码(set + map) 试题C:货物摆放 题解 代码 试题D:路径 题解 代码 试题E:回路计数 题解 代码 试题F:砝码称重 题解 代码 ...
- Celoria的板子(last update:20201017)
文章目录 数据结构 树状数组 基础 二维树状数组 逆序对 线段树 CDQ分治 树论 树的重心 定义 性质 代码 树的直径 性质 代码 LCA 主席树 平衡树 替罪羊树 Treap 区间翻转 Splay ...
- 求解最短路问题的几种方法总结
1.spfa求单源最短路,链式前向星存图, 时间复杂度o(kE) k是常数,大多数情况下为2. #include <stdio.h> #include <queue> #inc ...
- 邻接矩阵和邻接表_[力扣743] 带权邻接表的单源最短路
题目链接 743. 网络延迟时间 题目描述 有 N 个网络节点,标记为 1 到 N. 给定一个列表 times,表示信号经过有向边的传递时间. times[i] = (u, v, w),其中 u 是源 ...
- 迷阵突围 (dijkstra求次短路)邻接表,邻接矩阵
分析:dijkstra算法求最短路问题.先求最短路,再依次删除最短路上的边,每次删除一条,使用dijkstra求此时的最短路,更新最小值,最后得到第二短路.f标记删除与否,抑或便于寻找无向图的两条边. ...
- Floyd(弗洛伊德)算法(邻接矩阵与邻接表实现)——暴力求解多源点最短路
文章目录 Floyd(弗洛伊德)算法(邻接矩阵与邻接表实现)--暴力求解多源点最短路 简介 思想与原理 邻接矩阵解题模板 邻接表解题模板 Floyd(弗洛伊德)算法(邻接矩阵与邻接表实现)--暴力求解 ...
- 数据结构——基于 Dijsktra 算法的最短路径求解
实验七 基于 Dijsktra 算法的最短路径求解 [实验目的] 掌握图的邻接矩阵表示法,掌握采用邻接矩阵表示法创建图的算法. 掌握求解最短路径的 Dijsktra 算法. [实验内容] 问题描述 一 ...
- 图论学习-最短路模型
这里只是我对于最短路模型学习的一个记录,不正确的地方希望大家指出. 文章目录 最短路模型 一. 什么是最短路? 1.1 概念 1.2 基本术语 二.主要模型 2.1 dijkstra 2.1.1 步骤 ...
- [C] [最短路] 只有5行的算法:Floyd-Warshall
终于学到求最短路了,终于来到我最喜欢的算法--Floyd-Warshall了!今天还有点小激动呢! 我喜欢它,当然是因为它逻辑十分简单咯!真的只有5行诶! Floyd-Warshall算法 题目描述 ...
最新文章
- R语言计算回归模型标准化残差实战(Standardized Residuals):识别回归模型中离群点
- 【Android 逆向】代码调试器开发 ( ptrace 函数 | 向进程内存写出数据 )
- 知识图谱(知识图谱构建)
- 案例 | 铅酸蓄电池精细维护
- 一个比较完整的Inno Setup 安装脚本
- Lecture 4 Quick Sort and Randomized Quick Sort
- Java LinkedList公共对象peek()方法(带示例)
- CVPR 2021 3D视觉相关最新进展分享
- Class绑定、Class对象绑定、v-if(条件渲染)、v-show(元素显示)、v-for(列表渲染)
- oracle 的 dml,Oracle——DML
- Java面试官:Kafka集群管理
- json 和 数组的区别
- SDACM 五一联赛 3 G - L
- python3解析纯真ip数据库
- 算法模板-深度优先遍历
- 天使投资人杨宁:百度轻应用让移动时代很多不可能成为可能
- < abbr >标签 缩写
- Lambda表达式的几种简化形式
- 简述新图像文件格式——SVG
- python画国旗和八卦图