出差(Dijkstra)
一点点变式的Dijkstra算法,应该庆幸没有让我们打印路径。QWQ。。
为了让大家更好的理解Dijkstra,下面详细写了相关知识点。
基本思想
- 从给定的起始顶点(源点)开始,逐步找到从源点到图中其他顶点的最短路径。
- 通过每次从未确定最短路径长度的顶点集合中选取距离源点最近的一个顶点,然后更新该顶点的邻居顶点的最短路径长度,直到所有顶点的最短路径长度都被确定。
思路步骤
- 初始化:
- 创建一个集合
S
,用于存放已经确定最短路径长度的顶点。开始时,集合S
只包含源点s
。 - 创建一个距离数组
dist[]
,用于存放从源点s
到其他各顶点的最短路径长度。初始时,dist[i]
为源点s
到顶点i
的直接边的权重(如果存在直接边),否则为无穷大(表示源点s
无法直接到达顶点i
)。 - 创建一个用于记录最短路径上当前顶点的前一个顶点的数组
- 创建一个集合