单/多源最短路的三种算法 — dijkstra & spfa & floyd
什么是最短路
单源最短路:计算图中一个点到其他各点的最短距离
多源最短路:计算图中多个点到其他各点的最短距离
单源最短路 — dijkstra 算法
算法描述
main 函数:用vector数组存边,初始化一维数组 dist 来表示起点到其他各点的距离(到自己为 0,其他点为 INF),将初始边(目标点为起点,权值为 0)加入到优先队列 queue 中
dijkstra 函数:抛出优先队列的 top 边,若这个边的权值比现在到这个目标点的权值大(说明起点到该点的长度又更新了,而且那个边肯定在这个边前面),就跳过,否则就疏松以这个点为起点的所有边,若通过这个点,起始点到其他的点的距离有减小的,则把路径减小的目标点和减小后的距离加入到优先队列中,重复操作