Luogu P2146 由于对于每一个软件包有且只有一个依赖的软件包,且依赖关系不存在环. 很显然这是一个树形的结构. 再看题目要求的操作,安装实际上对应的是覆盖根节点到当前节点的路径,卸载则是覆盖该节点的整颗子树. 对于这样的操作,树链剖分+线段树可以很轻松地维护. 值得注意的是,根节点编号为0,我为了方便操作,把所有节点的编号都加了1 线段树的懒标记在没有使用的情况下应该标记为-1,因为0代表的是整个区间被覆盖为0.不能判断为标记为0就不进行push_down,因为卸载之后其子树上的所有节点…