#P12692. [集训队互测2025day16]数据结构

[集训队互测2025day16]数据结构

题目描述

给定一棵 nn 个节点的树,钦定点 11 为根,每条边的边权均为 11 ,节点 xx 有点权 axa_x ,初始所有节点的点权均为 00 。总共有 mm 次操作,每次操作先给出操作类型 opt\text{opt} ,接下来给出该操作的所有参数。

  1. 给定一条路径 (x,y)(x, y) 和范围 kk 以及权值 uu,对于所有点 ii,当点 ii 满足其到树上路径 (x,y)(x, y) 的最短距离 k\le k 时,有 aiai+ua_i \gets a_i + u
  2. 给定点 xx 以及权值 uu,对于所有点 xx 子树内的节点 ii,有 aiai+ua_i \gets a_i + u
  3. 给定一条路径 (x,y)(x, y) 和范围 kk,对于所有点 ii,当点 ii 满足其到树上路径 (x,y)(x, y) 的最短距离 k\le k 时,询问所有这样的点 ii 的点权和。
  4. 给定点 xx,对于所有点 xx 子树内的节点 ii,询问所有这样的点 ii 的点权和。
  5. 给定一条路径 (x,y)(x, y) 和范围 kk,对于所有点 ii,当点 ii 满足其到树上路径 (x,y)(x, y) 的最短距离 k\le k 时,询问所有这样的点 ii 的点权最大值。
  6. 给定点 xx,对于所有点 xx 子树内的节点 ii,询问所有这样的点 ii 的点权最大值。

其中编号对应操作类型,操作的所有参数将以上述描述的变量顺序给出。

输入格式

输入的第一行包含两个正整数 nnmm,表示树的大小和操作数量。

接下来的第 22 行到第 nn 行每行两个正整数 u,vu, v 表示树的一条边 (u,v)(u, v)

接下来 mm 行,每一行首先输入一个整数 opt\text{opt},表示操作类型:

  • opt=1\text{opt} = 1,接下来继续输入 x,y,k,ux, y, k, u
  • opt=2\text{opt} = 2,接下来继续输入 x,ux, u
  • opt=3\text{opt} = 3,接下来继续输入 x,y,kx, y, k
  • opt=4\text{opt} = 4,接下来继续输入 xx
  • opt=5\text{opt} = 5,接下来继续输入 x,y,kx, y, k
  • opt=6\text{opt} = 6,接下来继续输入 xx

输出格式

输出若干行,对于每一种操作三、操作四、操作五、操作六,输出对应的答案。

数据范围

本题开启子任务评测,子任务之间将会设置合理的依赖关系。

  • 子任务 11 和 子任务 22 (1010 分 + 1010 分): 保证 k=0k = 0
  • 子任务 33 和 子任务 44 (1010 分 + 1010 分): 保证所有涉及路径 (x,y)(x, y) 的操作满足 x=yx = y
  • 子任务 55 和 子任务 66 (1010 分 + 1010 分): 保证 k=1k = 1
  • 子任务 77 和 子任务 88 (2020 分 + 2020 分): 无特殊限制。

上述子任务中所有奇数编号子任务不包含操作五和操作六。

对于所有数据,保证 1n,m2×1051 \le n, m \le 2 \times 10^50k30 \le k \le 3105u105-10^5 \le u \le 10^5