观光
观光
考虑对于每个点维护两个值:最短路和次短路。
记录二者的个数,最后只需判断次短路是否是最短路恰好加上一即可。
由于图不存在负权边,所以不存在呈环状的更新方式。
所以我们实现时可以考虑将一个点拆成两个来写。
- 如果新的距离小于最短路,那么把最短路的信息赋给次短路,然后更新最短路,最后将二者塞进堆中。
- 否则,如果新的距离等于最短路,那么增加方案数即可。
- 否则,如果新的距离小于次短路,更新次短路,最后将其塞进堆中。
- 否则,如果新的距离等于次短路,那么增加方案数即可。
代码
本文作者:wscqwq
本文链接:https://www.cnblogs.com/wscqwq/p/17607126.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步