#P6027. Night 的迷宫逃离问题
Night 的迷宫逃离问题
Description
很久很久以前, 就发现了一个神奇的迷宫,它位于神话中的冰雾世界,亡灵之国——尼福尔海姆()之中,传说这个迷宫能反映出人们心中最深的渴望,并赐予成功走到终点(当然你要先穿过 )的勇者一件最适合他自己的神器。
心动了,这样的物品能让他在与 \text{R_rank_Pyramid} 以亿年为单位纷争的平衡中摆脱出来,真正地占到上风。
能抗衡 \text{R_rank_Pyramid} 的 岂是泛泛之辈, 里英灵的攻击甚至没有 \text{R_rank_Pyramid} 的平时的呼吸,血脉的律动来得更有威力,自然拦不住他。
很快便穿过了亡灵国度,来到了这个迷宫之前。他查阅的资料表明:这个迷宫由 个分叉路口和 条双向的通道构成,每两个分叉路口之间最多只有一条通道,在不同的通道上行走可能需要不同的时间。
这不就是一个水水的最短路吗? 很快地对于每个路口,运用了 算法求出了两两分叉路口之间的最短路(至于为啥 的 能跑 呢,因为这是偷偷运用 \text{R_rank_Pyramid} 所开发的无敌超算跑出来的),并迅速沿着最短路走到了位于迷宫最深处的 号节点。
在迷宫的最深处, 发现了无价的宝藏——原初之翼,这可是体现世界真实的传奇物品,他十分兴奋,没有考虑太多便取了下来。
问题大了! 由于不够小心,触发了迷宫的防卫装置,如果他没有尽快逃出迷宫,就会被迷宫拖入无尽的时光轮回之中,永远也无法解脱。
在这 个路口里面, 知道有 个路口是这个迷宫的出口,他只需要走到这 个路口中的其中一个便可以逃离,避免陷入可怕的轮回。
不慌不忙地沿着他之前所求出的最短路走过去,但是这迷宫的防卫装置岂会如此简单,他不仅会让你如果没有快速逃脱便把你拖入无尽的时光轮回之中,还能封锁你前进的路线,让你无法逃脱,最终陷入轮回。
幸好, 多年对抗 \text{R_rank_Pyramid} 的实力使得他能够对路线的封锁进行一定的影响,让它在任意时刻只能堵住一个通道,给 创造生机。换句话说,每当一条路被封堵住时,另一条路就会打开。
的逃生过程可以形式化地描述如下:每次他试图离开一个路口时,迷宫都会封闭一条连接该路口的通道。 只能选择没有被封闭的通道走到下一个路口。一旦 进入一条通道,在她到达该通道的另一端前,迷宫便不能封闭这条通道。当 到达下一个路口,迷宫就会选择再封闭一条通道(可以是 刚刚走过的那条通道)。
需要设计一个逃生计划,确切地说,她希望有一系列指令告诉他如何逃离这个迷宫。
设 是一个路口,如果 是出口, 可以直接逃生。否则,对路口 ,指令是下列形式中的一种:
在路口 ,优先选择一条通道到路口 。如果该通道被封堵,则选择另一通道去路口 。
不用考虑路口 ,按照逃生计划不会到达 。
注意:数据保证不管迷宫如何封闭通道,总能找到一个好的逃生计划保证 在有限时间内可以到达一个出口。
在所有逃生计划中,在最坏情况下用时最短的逃生计划所用的时间定义为 。
按照套路 当然知道怎么逃生,但是他懒得计算,便打算考一考你,如果你能帮他算出正确的 ,那么 就会考虑在邪恶的 \text{R_rank_Pyramid} 找你麻烦的时候保住你一次。
Input Format
第一行三个整数 ,含义如题目所示,以空格隔开。
接下来 行每行三个整数 ,依次表示一条无向通道的两端和长度,以空格隔开。
接下来 个整数以空格隔开,表示哪些分叉路口是出口。
Output Format
一个整数,为 在最坏情况下用时最短的逃生计划所用的时间。
Sample
输入样例:
13 12 9
0 1 1
0 2 4
0 3 11
1 4 11
1 5 7
1 6 15
2 7 3
2 8 13
2 9 23
3 10 3
3 11 1
3 12 2
4 5 6 7 8 9 10 11 12
输出样例:
13
Hint
子任务 () 具有如下性质:
这个神奇的迷宫是一个树形的结构,意味着 且对于每一对路口 都存在唯一的路径从 到 。
每个出口都和且只和另一个路口连接。
对于其它的路口,都和另外恰好三个或更多的路口连接。
子任务 () 具有如下性质:
这个神奇的迷宫是一个树形的结构,意味着 且对于每一对路口 都存在唯一的路径从 到 。
子任务 () 具有如下性质:
。
。
子任务 () 具有如下性质:
。
。