这道题目质量很高啊……
- 很容易想到一个Floyd的暴力算法: O ( N 3 ) O(N^3) O(N3) 求出每个点之间的最长路,超时炸空间。
- 我们发现这道题的”最短路“有些特殊:不是求和而是求出路径上的权值最小的一条边的权值。
- 我们发现,图中的很多边是一定不会经过的,举例来说:
- 在这个图中,显然 2 → 4 2\rightarrow4 2→4 这条边我们无论如何是不会经过的。因为如果我们想要从点 2 2 2 走到点 4 4 4, 2 → 1 → 4 2\rightarrow 1\rightarrow 4 2→1→4 明显是更好的选择。同样,如果想从 4 4 4 走到 2 2 2, 4 → 1 → 2 4\rightarrow 1\rightarrow 2 4→1→2 明显是更好的选择不管是想从哪个点到哪个点,只要需要从点 2 2 2 走到点 4 4 4 或从点 4 4 4 走到点 2 2 2,上述的走法总是不会比直接从 2 → 4 2\rightarrow 4 2