ThroughPath

[ABC187E] Through Path

思路

我们考虑利用 dfs 序将树转换成一个序列(树链剖分中的一小部分),如下图所示:

图上的括号里有两个参数,第一个参数 inu 就是所谓的 dfs 序,而后面的 outu 则是这个点为根的子树中 dfs 序最大的点的 dfs 序。

这两个参数对应的就是以某个点为根的子树内的所有点,如 (2,5) 即以 2 为根的子树(dfs2=2,dfs3=5,dfs4=3,dfs5=4)。

然后现在我们要进行操作,我们钦定 (u,v) 边中,uv 的父亲,然后我们考虑从 u 出发和从 v 出发。

  1. u 出发,那么除了 v 的子树内点无法到达,其余的所有点均可达,那么修改 1inv1,outv+1n
  2. v 出发,那么只有 v 的子树内点可达,修改 invoutv

可以发现查询是在操作做完之后,所以考虑做一遍序列上的差分即可。

代码

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17598933.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(10)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起