正刷着水题,却突然发现了这道题目。刚好是我们昨天学的,于是前来巩固。
题意:给我们 n n n 个点, m m m 条边,每个边都有个长度,让我们求从 1 到各个点的最短路径。
思路:这道题它的权值(也就是路径)大于等于 1 1 1,所以就可以用 Dijkstra 来解这道题。(因为我暂时只学懂了这个算法)由于怕数据点卡我,于是我和题目斗智斗勇,加上了堆优化。这也是很经典的 SSSP 题目(单源最短路问题),值得去刷。对于这种题目有几种做法:
1.Dijkstra 算法。
2.用了优先队列的 Dijkstra。
3.Bellman-Ford 算法
4.SPFA
接下来介绍一下 Dijkstra。Dijkstra (迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。
算法思想 : 设 G = ( V , E ) G=(V,E) G=(V,E) 是一个带权有向图,把图中顶点集合 V V V 分成两组,第一组为已求出最短路径的顶点集合(用 S S