2020/1/26单源最短路Dijkstra算法
今日大年初二,期望武汉疫情早日控制!! 单源最短路 以PTA 7-35 城市间紧急救援 (25分)为例 题目 该题目要求给出从相应起点出发所得到的最短路,于是考虑单源最短路的Dijkstra算法。 Dijkstra算法 算法可以得到由指定起点出发到达其他结点的最短路径长度。 实现步骤: 初始化距离数组为INF 扫描邻接矩阵,加入起点,更新距离数组 外层有N-1层循环,每层循环找到距离最小且未被访问的结点,加入该结点,更新距离数组。 全部执行完之后,将可以得到一个长度为结点数目的数组,该数组存储了由结点到达其它结点的最短距离。另外,该题目还需要输出最短路径的条数以及路径,所以在更新距离数组时,需要将距离相同的路径条数以及经过的路径进行记录。 AC代码如下: # include <bits/stdc++.h> # include <cstdio> # include <cstdlib> # include <iostream> # include <algorithm> # include <string.h> # define ll long long # define INF 10000 # include <map> # include <stack> # include <queue> # include <stdio.h> # include <string.h> using