迷宫(maze)
Description
破了魔法阵后,亮亮进入了一座迷宫。这座迷宫叫做“梦境迷宫”,亮亮只 有走出这座迷宫,才能从睡梦中醒来。
梦境迷宫可以用无向图来表示。它共有 $ n $ 个点和 $ m $ 条双向道路,每条道路 都有边权,表示通过这条道路所需的时间,且每条道路可以多次经过。亮亮位于 一号点,而出口则是 $ n $ 号点。原本,亮亮该找到一条最短路,快速冲出迷宫,然 而,梦境迷宫的特殊之处在于,如果沿着最短路到达出口,亮亮就会永远陷入梦 境。因此,亮亮必须寻找一条次短路。次短路的长度须严格大于最短路(可以有多条)的长度,同时又不大于所有除最短路外的道路的长度。
你的任务,就是编写一个程序,帮助亮亮找到通向出口的次短路。
Input
第一行有两个整数 $ n,m $,表示迷宫内共有 $ n $ 个点,$ m $ 条边。
接下来 $ m $ 行,每行三个整数 $ x,y,z $ 表示结点 $ x $ 和 $ y $ 之间连有一条边权为 $ z $ 的无向边。
Output
一个整数,表示次短路的长度。
这是某场我校模拟赛的T3,难得是这么水的一道T3,就是个次短路的板子题,但是我考场上就像失了智一样,没写出来…只好用一个不正确的贪心骗上30分走人
其实你每次更新最短路的同时就能把次短路顺便更新/记录了,只需要再开一个_dis数组来记录次短路就行了
更新的时候能更新最短路就更新最短路,否则次短路(最短路优先级还是比较高)
然后….然后就没了,注意一下 细节就行了,哦,还有一点——
别忘了初始化!!!!!!
这个代码的原型是enceladus大佬的板子合集中的,我Copy之后和同学们探讨了一下,搞明白了就自己写了一个,因为先入为主,所以难免长得像 $QwQ$
Code:
1 |
|