Graph and Queries
删边求连通块问题不好求,可以离线时光倒流转成加边。如果没有 "replace \(p_u\) with 0" 的话就可以直接搞了。
现考虑"replace \(p_u\) with 0"。或许我们可以用可持久化并查集,然而那样的话时空复杂度都会飞天,不仅难写还不好处理"replace \(p_u\) with 0"的操作(难不成还能启发式分裂??)不过我们可以用克鲁斯卡尔重构树来代替可持久化并查集,每次倍增查最近的时间小于当前时间的点。并且这样的话我们的查询修改操作就都可以在一棵树上搞了,每次都是一棵子树,于是我们可以直接在dfn上用线段树维护区间最小值及其位置,支持区间查询和单点修改即可。
不过说实话,这个做法对我来说真的不太好想。不知道有没有什么别的好想一些的做法。
然后做完以后发现我昨天打算做却没做的一道题用到的方法几乎和这道题一模一样。
我总是想用可持久化并查集来做这种题,但是克鲁斯卡尔重构树好像完全能应对这种题。或许只要不离线,可持久化并查集就用处不大。