C++实现有向图最短路径-Dijkstra单源最短路径算法
#include <iostream>
using namespace std;
#define INFINE 99999999//假装我是无穷大
const int N = 1010;
bool vis[N];
int dis[N];
int graph[N][N];//图
//Dijkstra算法计算点v到图上各个点的最短距离
void Dijkstra(int graph[][N], int v, int n) {//v为起点,//n为点个个数for (int i = 1; i <= n; i++)dis[i] = graph[v][i];vis[v] = true;dis[v] = 0;for (int i = 2; i <= n; i++) {int minx = INFINE;int minid = 0;for (int j = 1; j <= n; j++) {if (!vis[j] && dis[j] < minx) {minx = dis[j];minid = j;}}vis[minid] = true;for (int k = 1; k <= n; k++) {if (graph[minid][k] < INFINE)if (dis[k] > dis[minid] + graph[minid][k])dis[k] = dis[minid] + graph[minid][k];}}for (int i = 1; i <= n; i++)cout << dis[i] << " ";cout << endl;
}int main() {int vertexnum, arcnum;cin >> vertexnum >> arcnum;//点的个数,边的条数for (int i = 1; i <= vertexnum; i++)for (int j = 1; j <= vertexnum; j++)graph[i][j] = INFINE;for (int i = 1; i <= arcnum; i++) {int a, b, w;cin >> a >> b >> w;//a为起点,b为终点,w为权重graph[a][b] = w;}Dijkstra(graph, 1, vertexnum);//以点1为起点return 0;
}
C++实现有向图最短路径-Dijkstra单源最短路径算法相关推荐
- C++实现dijkstra单源最短路径算法-邻接表+优先队列
dijkstra单源最短路径算法不允许边权值为负,适用的图范围可以很大. 代码如下: #include <iostream> #include <queue> #include ...
- Dijkstra单源最短路径算法
这里写目录标题 一.算法原理 二.MATLAB实现 三.参考文献 一.算法原理 迪杰斯特拉算法(Dijkstra)是由荷兰计算机科学家狄克斯特拉于1959 年提出的,因此又叫狄克斯特拉算法.是从一个顶 ...
- Dijkstra 单源最短路径算法 Java实现
Dijkstra 单源最短路径算法 Java实现 算法导入 算法核心 复杂度分析 时间复杂度 空间复杂度 代码实现 参考资料 结尾 算法导入 在图论中,求最短路径有一个经典的算法 Dijkstra算法 ...
- 55、【图】Dijkstra求最短路径(单源最短路径+边权重为正数)(C/C++版)
算法介绍 Dijkstra算法是基于贪心思想,用于实现只含有正权边的单源最短路径问题,单源路径是从一个固定起始点出发到其余各点的路径. 算法过程: 首先,获取起始点到其余点的距离,然后从起始点出发,每 ...
- 数据结构(十五)dijkstra单源最短路径
1 算法原理 假设图中有顶点V={A,B,C,D,E,F},我们要求取A到其他顶点的最短距离.假设我们要求取定点A到其它顶点的最短路径,先把顶点A到源的距离设置为0,其他的距离设置为无穷大.准备两个集 ...
- 单源顶点最短路径java_单源最短路径-Dijkstra 算法
Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径.主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止. 问题:求a点到各个点的最短距离,如下图 ...
- java有向图最短路径_单源最短路径之Java实现(使用Java内置优先队列)
import java.util.*; /** * 用堆实现了从一个点到其他点的最短路径 * @author 李赫元 */ public class ShortestPath { /**有n个节点*/ ...
- C++实现dijkstra单源最短路径
代码如下: #include <iostream> using namespace std; const int N = 30; typedef char ElemType; const ...
- 【算法】【ACM】深入理解Dijkstra算法(单源最短路径算法)
Dijkstra算法是用来求解从某个源点到其他各顶点的最短路径(单源最短路径). 下面的Dijkstra算法的讲解都是基于这个有向图,在遇到其他问题可以类比. 算法的基本思想: 把图中的定点分成两组, ...
最新文章
- 实验问题总结与分享之×××(Virtual Private Network)
- auto-sklearn案例解析二
- 官司在即,品胜董事长对话苹果副总裁,打脸了谁?
- JS获取元素属性和自定义属性
- 关闭TOMCAT日志的三个方法
- 最新影视小程序源码去授权版免费下载
- 防止电脑自动锁屏(Windows系统)
- 2022考研资料每日更新(2021.07.28)
- iframe 跳转到其他页面
- Linux下和编译器、程序的运行、环境变量等相关的常见问题
- 【图论·习题】白银莲花池
- 快收藏ReactOS 新手指南
- 广东省数字经济行业发展动态及十四五前景预测分析报告2022-2027年
- 120个微信小程序源码,打包下载
- 关于自动化诊断测试(CANoe.Diva的应用)
- 漫话:什么是 https ?这应该是全网把 https 讲的最好的一篇文章了
- 【Python爬虫】按时爬取京东几类自营手机型号价格参数并存入数据库
- Android中的MVVM架构设计-实用篇(五)实现RecyclerView列表展示
- CAT分布式监控系统:CAT功能介绍,CAT监控系统是什么,能做什么?
- 【PYQT】制作可以显示图片的抽卡模拟器
热门文章
- [Python MoviePy 音视频开发零基础到实战] 一、用6条代码为你的视频裁剪以及添加水印
- sql 之like 和通配符%,_(mysql)
- 半圆和圆锥在一起会产生什么神奇的反应?
- 公交车座椅上有个洞,竟是为了…很多人都不知道
- 谈谈女友卸妆后的感受?
- 如何使用TensorFlow玩转深度学习?
- 每天20分钟,只需一年,一年级学生英语听力达到六年级水平!关键是坚持一点都不难!
- Java类集-SortedSet接口
- easyui 修改单元格内容_初学Excel办公软件快速修改文字的方法
- java wrapper linux_Java Service Wrapper linux 服务 java 自启动