Dijkstra算法C代码
一个带权图n个点m条边,求起点到终点的最短距离
先定义一个邻接矩阵graph,graph[i][j]表示从i到j的距离,i到j没有路就表示为无穷
然后定义一个visit数组,visit[i]表示i结点是否被访问
然后定义一个dist数组,dist[i]表示起点到i结点的最短距离
第一行输入n和m,表示有n个点m条边
接下来m行输入三个整数a,b,c,表示a到b存在一个距离为c的边
例如输入
4 4
0 1 500
0 2 100
1 3 200
1 2 300
图如下
先初始化dist,初始值为起点到所有点的直达距离
dist={0,500,100,inf},inf表示无穷,即不能直达
一开始起点被访问,所以visit初始化为
visit={1,0,0,0}
将除起点和终点外的每个点都作为中心节点并更新最短路径
一开始dist数组中{0,500,100,inf}最小值为100,对应的点为v2,所以将v2作为中心节点,令mid=2,再计算v2到所有未访问点的直达距离,更新dist,此时还有v1和v3未访问
dist变为{0,400,100,inf}
然后令visit[mid]=1表示已访问,依次类推,经过n-1轮后每个点visit位都为1,这个时候dist数组中dist[i]就表示起点到i结点的最短路径
#include<stdio.h>
#define inf 99999; //定义99999为无穷大
int dist[10];
int visit[10];
int graph[10][10];
int main(){scanf("%d%d",&n,&m);//先初始化所有边为无穷 for(i=0;i<n;i++){for(j=0;j<n;j++)graph[i][j]=inf;}//根据输入修改graghfor(i=0;i<m;i++){scanf("%d%d%d",&a,&b,&c); //从a到b的距离为c graph[a][b]=c;graph[b][a]=c; //由于是无向图,所以反过来也是c graph[i][i]=0; //自己到自己距离为0}visit[0]=1; //起点访问初始化为0 for(i=0;i<n;i++)dist[i]=graph[0][i];for(i=1;i<n;i++){//n个点需要n-1轮循环,因为一开始起点已经初始化了 //找dist数组最小值并记录下标为mid min_dist=inf;mid=0; for(j=0;j<n;j++){if((visit[j]==0) && (dist[j]<min_dist)){min_dist=dist[j];mid=j;}}//以mid为中心节点更新dist for(k=0;k<n;k++){if((visit[k]==0) && (dist[k]>dist[mid]+graph[mid][k])){dist[k]=dist[mid]+graph[mid][k];}}visit[mid]=1;//更新完后标记mid为访问 }for(i=0;i<n;i++)printf("%d ",dist[i]); //输出起点到每个点的最短路径return 0;
}
相关文章:
Dijkstra算法C代码
一个带权图n个点m条边,求起点到终点的最短距离 先定义一个邻接矩阵graph,graph[i][j]表示从i到j的距离,i到j没有路就表示为无穷 然后定义一个visit数组,visit[i]表示i结点是否被访问 然后定义一个dist数组,dist[i]表…...
P1064 [NOIP2006 提高组] 金明的预算方案
[NOIP2006 提高组] 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置࿰…...
大型企业组网如何规划网络
大型企业组网是一个复杂的过程,它需要细致的规划和设计,以确保网络能够满足企业的业务需求,同时保证性能、安全性和可扩展性。以下是规划大型企业网络的一些关键步骤和考虑因素: 1. 需求分析 业务需求:与各个业务部门…...
java:aocache的单实例缓存(二)
之前一篇博客《java:aocache的单实例缓存》介绍了aoocache使用注解AoCacheable实现单实例缓存的方式,同时也指出了这种方式的使用限制,就是这个注解定义的构造方法,不能再创建出新实例。 为了更灵活方便的实现单实例。aocache最新版本0.4.0增…...
ElasticSearch安装部署
简介 Elasticsearch 是一个开源的分布式搜索和分析引擎,用于实时地存储、检索和分析大数据量。它基于 Apache Lucene 搜索引擎库构建而成,提供了一个强大、稳定且易于扩展的搜索解决方案。 主要特点和用途: 分布式存储和搜索: E…...
数据赋能(132)——开发:数据转换——影响因素、直接作用、主要特征
影响因素 数据转换过程中需要考虑的一些影响因素: 数据格式与结构: 不同系统或应用可能使用不同的数据格式(如JSON、XML、CSV等)和数据结构(如关系型数据库、非关系型数据库等)。数据转换需要确保原始数据…...
TMGM:ASIC撤销禁令,TMGM强化合规、重启差价合约服务
TMGM作为差价合约(CFDs)与保证金外汇交易领域的领航者,安全、合规、高效被奉为我集团的终身使命。澳大利亚证券和投资委员会(ASIC)已正式撤销了早前针对TMGM差价合约业务实施的临时止损令。这一误会的解除,…...
基于SpringBoot网吧管理系统设计和实现(源码+LW+调试文档+讲解等)
💗博主介绍:✌全网粉丝10W,CSDN作者、博客专家、全栈领域优质创作者,博客之星、平台优质作者、专注于Java、小程序技术领域和毕业项目实战✌💗 Java精品实战案例《600套》 2025-2026年最值得选择的Java毕业设计选题大全࿱…...
实测2024年最佳的三款Socks5代理IP网站
一、引言 在浩瀚的网络世界中,Socks5代理IP服务如同导航灯塔,指引我们穿越数据海洋,安全、稳定地访问目标网站。作为专业的测评团队,我们深知一款优秀的Socks5代理IP网站需要具备哪些特质:稳定的IP资源、高效的连接速…...
Pythonnet能导入clr,但无法引入System模块?
【pythonnet详解】—— Python 和 .NET 互操作的库_pythonnet 详细使用-CSDN博客 Python中动态调用C#的dll动态链接库中方法_python 如何调用c# dll-CSDN博客 需求:Python调用并传List<float>类型参数给.Net 起初:直接 # 创建一个Python浮点数…...
媒体宣发套餐的概述及推广方法-华媒舍
在今天的数字化时代,对于产品和服务的宣传已经变得不可或缺。媒体宣发套餐作为一种高效的宣传方式,在帮助企业塑造品牌形象、扩大影响力方面扮演着重要角色。本文将揭秘媒体宣发套餐,为您呈现一条通往成功的路。 1. 媒体宣发套餐的概述 媒体…...
Windows和Linux C++判断磁盘空间是否充足
基本是由百度Ai写代码生成的,记录一下。实现此功能需要调用系统的API函数。 对于Windows,可调用函数GetDiskFreeSpaceEx,使用该函数需要包含头文件windows.h。该函数的原型: 它的四个参数: lpDirectoryName࿰…...
数据访问层如何提取数据到其他层,其他类中
当然可以,以下是一些具体的例子,展示了如何将数据库访问逻辑封装在一个单独的类中,并在其他类中使用这个类来获取数据。 数据库访问类(DatabaseAccess.java): java复制代码 import java.sql.*; import ja…...
【JS】AI总结:JavaScript中常用的判空方法
在JavaScript中,判空是一个常见的操作,因为变量可能未定义、未初始化或包含特定的空值。以下是JavaScript中常用的判空方法: 使用if语句直接判断: 如果变量是null、undefined、0、NaN、空字符串(""ÿ…...
Rust单元测试、集成测试
单元测试、集成测试 在了解了如何在 Rust 中写测试用例后,本章节我们将学习如何实现单元测试、集成测试,其实它们用到的技术还是上一章节中的测试技术,只不过对如何组织测试代码提出了新的要求。 单元测试 单元测试目标是测试某一个代码单…...
vue全局方法plugins/utils
一、在src目录下创建一个plugins文件夹 test.ts文件存放创建的方法,index.ts用于接收所有自定义方法进行统一处理 二、编写自定义方法 // test.ts文件 export default {handleTest(val1: number, val2: number) {// 只是一个求和的方法return val1 val2;}, };三…...
高阶算法班从入门到精通之路
课程介绍 本课程旨在帮助学员深入理解算法与数据结构的核心概念,从而掌握高级算法设计与分析技能。每集课程内容精心设计,涵盖了常用数据结构、经典算法及其应用场景等方面的深度讲解,同时通过大量实例演练,帮助学员提升解决实际…...
C++ 左值右值
文章目录 概述左值右值右值引用左值和右值的互换 小结 概述 左值和右值属于2中不同的表达式类型;它们在表达式中扮演不同的角色,特别是在赋值操作和函数参数传递中。 左值 定义:左值是指那些在内存中有确定位置的表达式,可以出…...
[数据集][目标检测]水面垃圾水面漂浮物检测数据集VOC+YOLO格式3749张1类别
数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):3749 标注数量(xml文件个数):3749 标注数量(txt文件个数):3749 标注…...
[深度学习] 卷积神经网络CNN
卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理数据具有类似网格结构的神经网络,最常用于图像数据处理。 一、CNN的详细过程: 1. 输入层 输入层接收原始数据,例如一张图像,它可以被…...
区别QPushButton和QToolButton
在刚开始学习Qt时,可能很难理解QPushButton和QToolButton之间的区别。 QToolButton通常用于QToolBar中,常常只显示图标,而不显示文本。那么,它们的主要区别是什么?什么时候应该使用QPushButton,什么时候应该使用QToolButton? 了解这一点很重要,这样我们才能选择最合适…...
【Python】已解决:TypeError: Object of type JpegImageFile is not JSON serializable
文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:TypeError: Object of type JpegImageFile is not JSON serializable 一、分析问题背景 在进行Python编程时,特别是处理图像数据和JSON序列化时&…...
超简单的nodejs使用log4js保存日志到本地(可直接复制使用)
引入依赖 npm install log4js 新建配置文件logUtil.js const log4js require(log4js);// 日志配置 log4js.configure({appenders: {// 控制台输出consoleAppender: { type: console },// 文件输出fileAppender: {type: dateFile,filename: ./logs/default, //日志文件的存…...
Python面试宝典第1题:两数之和
题目 给定一个整数数组 nums 和一个目标值 target,找出数组中和为目标值的两个数的索引。可以假设每个输入只对应唯一的答案,且同样的元素不能被重复利用。比如:给定 nums [2, 7, 11, 15] 和 target 9,返回 [0, 1],因…...
fastapi集成jwt
fastapi集成jwt fastapipython-jose实现jwt登录 1、安装相关包 python-jose pip install python-jose2、创建token及token校验 from copy import deepcopy from datetime import timedelta, datetimefrom jose import jwt, ExpiredSignatureErrorSECRET_KEY "xxx&quo…...
自定义一个背景图片的高度,随着容器高度的变化而变化,小于图片的高度时裁剪,大于时拉伸100%展示
1、通过js创建<image?>标签来获取背景图片的宽高比; 2、当元素的高度大于原有比例计算出来的高度时,背景图片的高度拉伸自适应100%,否则高度为auto,会自动被裁减 3、背景图片容器高度变化时,自动计算背景图片的…...
iPhone怎么恢复删除的数据?几款顶级iPhone数据恢复软件
从iOS设备恢复数据。 对于任何数据恢复软件来说,从iOS设备恢复数据都是一项复杂的任务,因为Apple已将众多数据保护技术集成到现代iPhone和iPad中。其中包括硬件加密和文件级加密。iOS 上已删除的数据只能通过取证文件工件搜索来找到,例如分析…...
macOS 上或linux安装 Jenkins
在 macOS 上使用 Docker 安装 Jenkins 的步骤如下: 安装 Docker: 如果尚未安装 Docker,请先从 Docker 官网下载并安装 Docker Desktop for Mac。 打开终端: 打开 macOS 上的终端应用程序。 拉取 Jenkins 镜像: 使用以下命令从 Docker Hub 拉取 Jenkins…...
axios发送数据的几种方式
axios 发送数据的几种方式 1、最简单的方式是将参数直接拼接在 URL 上,这通常用于传递少量的数据,例如资源的 ID。 const id 12; axios.delete(https://api.example.com/${id}).then(response > {console.log(Resource deleted successfully:, res…...
示例:WPF中推荐一个Diagram开源流程图控件
一、目的:分享一个自研的开源流程图控件 二、使用方法 1、引用Nuget包: 2、添加节点列表和绘图控件 <DockPanel><ItemsControl DockPanel.Dock"Left"><h:GeometryNodeData Text"节点"/></ItemsControl><…...
广州专门做网站的公司/推广计划书范文
求职 地图 网页 应用 更多 关键词:C/C面试技巧及试题? C/C 试题有难有易,不能因为容易,我们就轻视,更不能因为难,我们就放弃。我们面对高薪就业的态度永远不变,那就是坚持、坚持、再坚持。出现问…...
做英文的小说网站/怎么做电商卖东西
允许phpmyadmin空密码登录的配置方法在Mysql修改root密码的命令及方法一文中,我提到了使用phpmyadmin修改Mysql的root密码的方法,但是当你将phpmyadmin登录密码设置为空密码时,尽管你通过Mysql 命令行方式可以以空密码进入Mysql但是当你重新以…...
soho外贸网站建设/优化seo是什么意思
文章目录题目题目解析解题代码我的个人小站: acking-you.github.io题目 OJ平台 题目解析 实际上就是一个前缀和二分的处理,我一旦爆出前缀和二分,应该就都有思路了! 解题代码 这里偷懒使用了STL,当然也可自己去写二…...
html 单页网站/百度霸屏培训
部署django项目常见的方式有三种: 1.在windows服务器中,采用IIS服务器进行部署。 2.在Linux服务器中,采用uwsginginx或者uwsgiapache的组合进行部署。 本文主要介绍在ubuntu20.04中采用uwsginginx的组合进行上线部署的方法。 第一步 安装uwsgi 1.首先启…...
网站建设中什么意思/网页设计代做
函数式接口(FunctionalInterface) 只声明了一个抽象方法的接口称为函数式接口可以在接口上添加注解(FunctionalInterface)来判断此接口是否为函数式接口 /*** Java内置的4大核心函数式接口* 消费型接口:Consumer<…...
网站 粘度/深圳网站建设资讯
显示存储卷列表(和nova volume-list命令功能相同) cinder list 显示存储卷类型列表 cinder type-list 列表展示zone cinder availability-zone-list 创建存储卷 cinder create --display-name VOLNAME SIZE(SIZE的单位为GB) 创建基…...