【思路要点】
- 考虑计算 f i f_i fi 表示到达点 i i i 后发现 i i i 的一条邻边断开,最坏情况下到达 T T T 的的最短路。
- 注意到图是无向图,可以从 T T T 出发建立一棵最短路树,则最坏情况显然是断开 i i i 的父边的情况。
- 枚举一条非树边 ( x , y , w ) (x,y,w) (x,y,w) ,则对于 x , y x,y x,y 路径上的一个非 L c a ( x , y ) Lca(x,y) Lca(x,y) 的点 i i i ,存在一条不经过其父边的,长度为 d e p t h x + d e p t h y + w − d e p t h i depth_x+depth_y+w-depth_i depthx+depthy+w−depthi 的到达 T T T 的路径。
- 用堆 + + + 启发式合并或可并堆维护 d e p t h x + d e p t h y + w depth_x+depth_y+w depthx+depthy+w ,优化 f i f_i fi 的计算即可。
- 令 g i g_i gi 表示在当前人在 i i