观光

方法一:

来证明一下为什么一定可以找到严格次短路

显然最终得到的\(ans\)\(dis[n]\)大,如果\(ans\)不是严格次短路,那么\(ans\)还比严格次短路大,假设图中严格次短路为下图

那么我们枚举这条路径上面的边的时候,得到的\(temp\)肯定比\(ans\)小。因为\(temp\)是经过这条边的最短路径,而严格次短路也经过这条边,所以严格次短路的长度比\(temp\)大,而\(ans\)大于严格次短路,所以\(temp\)大于\(ans\),那么\(ans\)没有被更新的原因只有可能是\(temp\)等于\(dis[n]\)

我们不妨设我们是依次枚举图中的边的

第一次枚举的是\((1,2)\),有\(temp==dis[n]\),那么就说明存在一条经过\((1,2)\)的最短路如下

这也说明了\(1->2\)\(1\)\(2\)的最短路

第二次枚举的是\((2,3)\),有\(temp==dis[n]\),那么就说明存在一条经过\((2,3)\)的最短路如下

注意\(1->2\)\(1\)\(2\)的最短路,说明\(1->2->3->5\)是最短路,同时也说明\(1->2->3\)\(1\)\(3\)的最短路

第三次枚举的是\((3,4)\),有\(temp==dis[n]\),那么就说明存在一条经过\((3,4)\)的最短路如下

同理说明\(1->2->3->4\)\(1\)\(4\)的最短路

然后我们就发现,我们接下来枚举\((4,5)\)这条边,那么\(temp\)就等于路径\(1->2->3->4->5\)的长度,这显然就是次短路的长度,\(ans\)不可能不被更新,所以矛盾,所以不存在这么一条路径

方法二看这篇题解

posted @ 2024-02-06 16:08  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报