题目大意
你有一棵有 $n$ 个节点的有根(根为 $1$ )树,你要对对其进行 $m$ 次操作。
每次操作给出两个数 $a_i, b_i$,你要往以 $a_i, b_i$ 为根的子树内每个点的集合里加入数 $i$。
问最后对于每个点有多少个点(不包括自己)的集合与其交集非空。
$1 \leq n, m \leq 10^5$
可以发现题目可以转化为把从$l$到$r$节点到$1$的路径上的点的点权都加上$1$,然后统计$1$到$z$路径上的点权
然后发现这个东西可以差分。。。
于是我们就把询问拆成$l-1$和$r$,然后按$r$排序
从$1$到$n$把$1$到$i$路径点权全部$+1$
询问时查询$1$到$z$路径点权和
很明显这是一道树剖题
但是,树剖是在点上进行的操作,如何把它转化到边上呢?
不难发现,每一个点与他的父亲节点之间仅有唯一的一条边
于是我们可以把这条边的边权转化为这个儿子节点的点权。
Update your browser to view this website correctly. Update my browser now