第四十次
A
B
树剖一下不就完了。
C
线段树分治一下不就完了。
按时间轴建线段树,把每条边插入其存活时间拆成的点中,
则一个时刻的答案仅被其对应的叶子到根路径上的点中的边影响。
DFS 这个线段树,可撤销并查集维护当前点到根路径上的点中的边即可。
D
把无向边形成的连通块缩成一个点,形成一个 DAG。
考虑拓扑,到一个块时,$s$ 到块内连接入块的点 $i$ 不经过块内边的最短路已经确定为 $d_i$,
于是可以看成 $s$ 向每个 $i$ 连了一条边权为 $d_i$ 的边,然后可以确定 $s$ 到块内每个点的最短路,
用这些最短路松弛 $s$ 到块外连接出块的点的最短路即可。