计算机算法分析与设计(16)---Dijkstra算法(含C++代码)
文章目录
- 一、知识概述
- 1.1 算法描述
- 1.2 例题分析
- 二、代码编写
一、知识概述
1.1 算法描述


1.2 例题分析

二、代码编写
输入:
第一行:图的顶点数n
第二行:图的边数k
第三行:算法起点begin,算法终点end
接下来为k行:
图的点a下标,图的点b下标,a到b的步长len
输出:
最短距离
样例:
5
6
0 1
0 2 60
0 3 30
0 4 50
1 2 20
1 4 10
3 4 10
#include <iostream>
#include <algorithm>
using namespace std;#define INF 9999999 //定义不可达,即无穷大
#define MAXN 200 // 最大顶点数//low最短距离,visit访问标记
int begin_idx, end_idx, n, k, map[MAXN][MAXN], low[MAXN], visit[MAXN]; void dijkstra()
{int m_len, index;for (int i = 0; i < n; i++){low[i] = map[begin_idx][i]; //初始化low,表示从源点到其他点的最短距离 }for (int i = 0; i < n; i++){m_len = INF;index = i;for (int j = 0; j < n; j++){ //查找最短未访问距离if (low[j] < m_len && !visit[j]){m_len = low[j];index = j;}}visit[index] = true;for (int j = 0; j < n; j++){int step_len = m_len + map[index][j];if (step_len < low[j]){ //是否更新距离low[j] = step_len;visit[j] = false;}}}cout << "最短距离是:" << endl;cout << low[end_idx] << endl;
}int main()
{int a, b, len;cout<<"请输入顶点数:"<< endl; cin >> n; // 顶点数cout<<"请输入边数:"<< endl;cin >> k; // 边数cout<<"请输入要查询的开始和结束下标:"<< endl;cin >> begin_idx >> end_idx; // 始末下标fill(low, low + MAXN, false); //fill是填充数组值为false fill(visit, visit + MAXN, false); //fill是填充数组值为falsefor (int i = 0; i < MAXN; i++){fill(map[i], map[i] + MAXN, INF); //先填充两顶点间距离为无穷大 }visit[begin_idx] = true; //开始结点被访问 cout << "请输入两顶点及两顶点间的距离:" << endl; for (int i = 0; i < k; i++){cin >> a >> b >> len; //输入边的值 map[a][b] = map[b][a] = len;}dijkstra();return 0;
}

相关文章:
计算机算法分析与设计(16)---Dijkstra算法(含C++代码)
文章目录 一、知识概述1.1 算法描述1.2 例题分析 二、代码编写 一、知识概述 1.1 算法描述 1.2 例题分析 二、代码编写 输入: 第一行:图的顶点数n 第二行:图的边数k 第三行:算法起点begin,算法终点end 接下来…...
小团队之间有哪些好用免费的多人协同办公软件
在小团队协作中,选择适合的多人协同办公软件是提高工作效率和团队协作的重要一环。幸运的是,市场上有许多大多数功能都免费的多人协同办公软件,为小团队提供了强大的协作功能和便捷的工作环境。 在本文中,我将根据自己多年的在线…...
codeforces (C++ Morning)
题目: 翻译: 思路: 1、要将四位数显示,每次操作可以选择移动光标(移动到相邻的位置)或者显示数字,计算最少需要多少次操作。 2、用flag表示当前光标位置,sum为记录操作次数&#…...
Oracle数据库备份与恢复exp/imp命令
exp导出工具将数据库中数据备份压缩成一个二进制系统文件,可以在不同OS间迁移 可以导出用户所有对象以及对象中的数据;导出用户所有表或者指定的表;导出数据库中所有对象。 imp所执行的步骤: (1) create table --新建表 (2) inser…...
何为心理承受能力?如何提高心理承受能力?
心理承受能力,也可以理解为人的抗压能力,指的是承受压力,承受逆境的能力。人的一生其实就是在不断的解决问题,见招拆招,遇到问题解决问题,在我们不断学习和锻炼的过程中,提高了我们解决问题的效…...
Seata学习
Seata Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。 官网地址:https://seata.io/zh-cn/index.html 为什么会产生分布式事务? 示例:用户下单后需要创建订单,同时…...
探索数据结构世界之排序篇章(超级详细,你想看的都有)
-文章开头必看 1.!!!本文排序默认都是排升序 2.排序是否稳定值指指排完序之后相同数的相对位置是否改变 3.代码相关解释我都写在注释中了,方便对照着看 1.插入排序1.1直接插入排序1.2希尔排序1.2.1单趟1.2.2多趟基础版——排完一…...
偶数科技发布实时湖仓数据平台Skylab 5.3版本
近日, 偶数发布了最新的实时湖仓数据平台 Skylab 5.3 版本。Skylab包含七大产品,分别为云原生分布式数据库 OushuDB、数据分析与应用平台 Kepler、数据资产管理平台 Orbit、自动化机器学习平台 LittleBoy、数据工厂 Wasp、数据开发与调度平台 Flow、系统…...
vant组件是使用?
首先 在vue项目中使用的时候 要先下载组件 使用npm安装 # Vue 3 项目,安装最新版 Vant npm i vant# Vue 2 项目,安装 Vant 2 npm i vantlatest-v2 使用yarn安装或pnpm # 通过 yarn 安装 yarn add vant# 通过 pnpm 安装 pnpm add vant 在框架中引入即…...
CSP-S 2023 游记
开题,首先先把除了第三题的所有题看了一遍。(由于第三题太长,先放着后面再看) 决定顺序先把一二题做了。 看第一题,小小思考了一手,发现暴力可做,于是飞速码完,小小对拍一下&#…...
关于Git的入门教程(附GitHub和Gitee的使用方法)
一. Git 概述 Git是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。Git易于学习、占地面积小、性能极快。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于Subversion、CVS、Perforce和ClearCas…...
C# winform如何实现数据的保存和读取
在c#winform中我们在写程序时,经常需要进行数据处理,那么数据如何保存和读取(下面我们通过序列化和反序列化的方式来实现) 第一步: 我们建立一个winform窗体 第二步: 构建一个外部实体类(Student类) 第…...
【Java基础面试四十一】、说一说你对static关键字的理解
文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:说一说你对static关键字…...
istio介绍(二)
5. kubesphere istio使用 5.1 整体架构 ks-account 提供用户、权限管理相关的 APIks-apiserver 整个集群管理的 API 接口和集群内部各个模块之间通信的枢纽,以及集群安全控制ks-apigateway 负责处理服务请求和处理 API 调用过程中的所有任务ks-console 提供 KubeSp…...
中文编程开发语言工具构件说明:屏幕截取构件的编程操作
屏幕截取 用于截取指定区域的图像。 图 标: 构件类型:不可视 重要属性 l 截取类型 枚举型,设置在截取屏幕时的截取类型。包括:全屏幕、指定区域、活动窗口三种。当全屏幕截取时相当于执行了硬拷屏(PrintScre…...
selenium多窗口、多iframe切换、alert、3种等待
1、多标签/多窗口之间的切换 场景: 在页面操作过程中有时候点击某个链接会弹出新的窗口,这时就需要切换到新打开的窗口上进行操作。这种情况下,需要识别多标签或窗口的情况。 操作方法: switch_to.window()方法:切换…...
物联网AI MicroPython传感器学习 之 RTC时钟模块
学物联网,来万物简单IoT物联网!! 一、产品简介 DS1302 是DALLAS 公司推出的涓流充电时钟芯片,内含有一个实时时钟/日历和31字节静态RAM,实时时钟/日历电路提供秒、分、时、日、周、月、年的信息,每月的天数…...
Mac安装nginx(Homebrew)
查看需要安装 nginx 的信息 brew info nginxDocroot 默认为 /usr/local/var/www 在 /opt/homebrew/etc/nginx/nginx.conf 配置文件中默认端口被配置为8080,从而使 nginx 运行时不需要加 sudo nginx将在 /opt/homebrew//etc/nginx/servers/ 目录中加载所有文件 …...
租用服务器后需要注意什么呢
租用服务器后需要注意什么呢 1、从IDC服务商中接收到服务器时,需要对服务器的各项性能进行测试确认,并做好记录以便对服务器的性能做到心中有数。 2、在服务器租用交接时,要了解服务器的安全设置情况,对服务器安全技术方面不了解…...
pip 时报错 no such option: --bulid-dir 的解决办法
Pycharm 安装第三方库报错及解决方案——no such option: --build-dir Pycharm 安装第三方库报错及解决方案——no such option: --build-dir 最近在学习路径规划相关内容,在运行GitHub上下载例程时缺少“plotly”库,根据网上查到的安装步骤操作&#x…...
基于Anything V5的Stable Diffusion服务:5分钟部署教程
基于Anything V5的Stable Diffusion服务:5分钟部署教程 1. 快速了解Anything V5 Anything V5是当前最受欢迎的动漫风格生成模型之一,基于Stable Diffusion技术构建。相比前代版本,V5在以下方面有显著提升: 画质增强:…...
把 MQTT 带进 ABAP 栈之后,ABAP Platform 1809 的事件驱动能力终于有了真正的外向接口
很多人在第一次看到 MQTT client in ABAP Platform 1809 这个主题时,会下意识把它理解成,ABAP 又多了一种能发消息的协议而已。真把官方资料和示例代码一路看完,感受会完全不一样。这里新增的并不只是一个 publish 动作,而是 ABAP 终于可以用比较自然的方式,直接接到外部消…...
使用openclaw获取微信公众号文章详情详细过程记录 获取公众号文章标题 作者 正文内容
目录 背景 过程 结果 背景 我有一个对公众号改写的服务已经上线,上线后发现获取文章详情经常被微信风控,一天甚至会出现两次无法获取微信公众号文章的情况,于是我就想办法优化,openclaw装了一个多月了,终于该他上场…...
NRF52832调试效率翻倍:除了RTT,这些SEGGER工具的组合拳你会用吗?
NRF52832调试效率翻倍:SEGGER工具链的深度协同实战 在嵌入式开发领域,调试效率往往决定项目成败。当面对nRF52832这类资源受限的蓝牙SoC时,传统调试方法如同在迷宫中摸索,而SEGGER提供的工具链则像一套完整导航系统。本文将带您超…...
WAN2.2文生视频参数设置指南:视频尺寸、时长如何选效果最好
WAN2.2文生视频参数设置指南:视频尺寸、时长如何选效果最好 本文约3500字,阅读时间约10分钟,包含详细的参数设置建议和实际效果对比 1. 视频参数设置的重要性 当你第一次使用WAN2.2文生视频功能时,可能会被各种参数选项搞得眼花…...
抖音去水印批量下载工具:一键高效保存全网优质内容
抖音去水印批量下载工具:一键高效保存全网优质内容 【免费下载链接】TikTokDownload 抖音去水印批量下载用户主页作品、喜欢、收藏、图文、音频 项目地址: https://gitcode.com/gh_mirrors/ti/TikTokDownload 还在为抖音上的精彩视频无法完整保存而烦恼吗&am…...
如何用强化学习高效解决复杂组合优化问题:RL4CO完整实战指南
如何用强化学习高效解决复杂组合优化问题:RL4CO完整实战指南 【免费下载链接】rl4co A PyTorch library for all things Reinforcement Learning (RL) for Combinatorial Optimization (CO) 项目地址: https://gitcode.com/gh_mirrors/rl/rl4co 你是否曾为物…...
docx2tex:将Word文档专业转换为LaTeX的终极解决方案
docx2tex:将Word文档专业转换为LaTeX的终极解决方案 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 你是否在学术写作或技术文档创作中,经常面临Word与LaTeX格式转换的…...
从HOGP协议到内核驱动:深入解析BlueZ连接蓝牙手柄的全链路
1. 蓝牙HID设备与HOGP协议基础 第一次接触蓝牙手柄开发时,我被各种专业术语搞得晕头转向。直到把整个流程拆解成几个关键环节,才发现原来蓝牙手柄的工作原理就像快递配送系统一样有章可循。HOGP(HID Over GATT Profile)本质上是个…...
Zotero Scholar Citations插件安装与配置全攻略:从下载到解决无法更新引用量的坑
Zotero Scholar Citations插件深度配置指南:从安装到引用量同步优化 在学术研究过程中,跟踪自己或他人文献的引用情况是评估学术影响力的重要手段。Zotero作为一款开源的文献管理工具,通过插件系统扩展了其核心功能。其中,Scholar…...
