摘要:
单源最短路 | | Bellman-Ford | SPFA | Dijkstra | H-Dijkstra | | | | | | | | 思路 | 遍历全边,直到不变 | 宽搜渐进,入队再更 | 找最近点,更新邻点,找完不再用 | 取负入队,大根堆找点,其余相同 | | 负边权 | 能 | 能 | 阅读全文
摘要:
全源最短路,换一种说法就是n个单源最短路,可以用n次Bellman-Ford或SPFA,非负边权还可以用Dijkstra,可是有负边权用前两个算法还是慢,如果我们能把负边权映射成非负边权的话,一切就都好办了 这里我们引入一个虚拟结点,它和所有点的初始距离都是0,然后,我们求出来这个结点和其他店的最短 阅读全文
摘要:
全源最短路,顾名思义,就是任意两点之间的最短路 floyed的思路就是每次选一个点k,如果k不在u和v路径上,就不改变,如果k在u和v的路径上,进行松弛操作d[u][v]=min(d[u][v],d[u][k]+d[k][v]) 例题 洛谷 B3647 【模板】Floyd 算法 ``` #inclu 阅读全文
摘要:
对普通的Dijkstra,每次要找到没有标记的距离最短的点显然很麻烦,所以不如做一个单调队列,每次取堆顶就行了,由查找的n变成进堆的logn,个人简称H-Dijkstra 时间复杂度有说 O(mlogn)也有一点O(mlogm)的,不过问题不大,基本是比SPFA要快的 #include<iostre 阅读全文