线段树分治 + 并查集.
这本来是个 $LCT$ 的模板题,但离线下来也可以用线段树分治 + 并查集来做.
每条边可以看做在一个时间区间内生效,每个线段树节点维护一个 $vector$ ,存储在该区间内都有效的边.
一条边只会被加入 $O(\log m)$ 个线段树节点,空间复杂度为 $O(m\log m)$ .
最后 $dfs$ 整个线段树,进入一个节点时,就让它的 $vector$ 中的边都生效,退出时撤销这些边.
因为有撤销,所以不能路径压缩,可以用按秩合并的并查集来维护.
1 |
|