一、如果是有向无环图(DAG),求单源最短路,用 拓扑松弛算法
具体算法见:https://www.jianshu.com/p/cf1b9fcfe3bf
二、如果是没有负边(边权为负值)的(有向/无向)图,求单源最短路,用 Dijkstra算法
三、如果是没有负圈(权值和为负数的回路)的(有向/无向)图,求单源最短路,用 Bellman-Ford算法
注意:BF算法虽然能处理有负边的图,但是负边仅限于有向单负弧,因为有向双负弧、无向负边等价于负圈
四、如果是求多源最短路,用 Floyd-Warshall算法