对于一些只能在最短路径上操作且可能同时存在多条最短路的问题时,我们可以采用建最短路图的方法:就是将在最短路径上的边放入一个新的图当中,使得问题可以在一个DAG(有向无环图)上操作。
具体实现方法:如果我们需要求从1到n的最短路图,可以先从节点1跑一遍单源最短路,再从n跑一遍单源最短路,(跑两遍最短路),然后枚举每个节点,如果从节点1到它的最短路加上从节点n到它的最短路等于从节点1到节点n的最短路径,那么该点就在最短路图上。