有向图的Dijkstra算法

本文探讨了Dijkstra算法在有向图中的实现,使用邻接矩阵作为数据结构,详细阐述了算法的步骤,包括初始化节点距离(len数组)和访问状态(vis数组),并解释了如何通过循环寻找并更新最短路径。算法的时间复杂度为O(n^2),空间复杂度为O(n),并附带了测试环节。
摘要由CSDN通过智能技术生成

算法原理就不多说了,就讲一讲实现
代码采用邻接矩阵的数据结构,a(i,j)代表第i个节点到第j个节点的距离,不能到达为无穷,代码中设为10000000。
另外数组len代表节点0到每个节点到最短路程,每循环一次就更新一次,vis数组表示访问情况,1表示访问过,0表示未访问。
算法分为2步:
(1)置len数组的值,直接将矩阵的第一行给len赋值即可 vis[0] = 1;
(2)n-2次循环,每次加入一个节点(为什么不是n-1次呢?最后一次就一个点了,没什么好更新的)
每次循环做的事:
1)找到下一个节点(next_node函数)
2)将找到节点的后继的len值进行更新

#include <iostream>
#include <algorithm>
using namespace std;
const int MAX = 10000000;
const 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值