观光

方法一:

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

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

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

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

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

这也说明了1>212的最短路

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

注意1>212的最短路,说明1>2>3>5是最短路,同时也说明1>2>313的最短路

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

同理说明1>2>3>414的最短路

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

方法二看这篇题解

posted @   最爱丁珰  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示