CF2006B.Iris and the Tree

普及+/提高

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一棵以 11 号结点为根的有根树。对于树中任意结点 ii(1<i≤n1 < i \leq n),存在一条连接结点 ii 和 pip_i(1≤pi<i1 \leq p_i < i)的边,边权为 tit_i。

Iris 并不知道所有 tit_i 的具体值,但她知道 ∑i=2nti=w\displaystyle\sum_{i=2}^n t_i = w,且每个 tit_i 都是非负整数。

树的结点编号有特殊要求:每个子树中的结点编号是连续的整数。换句话说,树的结点编号是按照深度优先遍历的顺序排列的。

上图中的树满足条件。例如,结点 22 的子树中,结点编号为 2,3,4,52, 3, 4, 5,是连续的整数。

上图中的树不满足条件,因为结点 22 的子树中,结点编号 22 和 44 不是连续的整数。

我们定义 dist⁡(u,v)\operatorname{dist}(u, v) 为树中结点 uu 和 vv 之间的简单路径长度。

接下来有 n−1n-1 个事件:

  • Iris 得到两个整数 xx 和 yy,表示 tx=yt_x = y。

每次事件后,Iris 想要分别独立地计算每个 ii(1≤i≤n1 \leq i \leq n)时 dist⁡(i,i mod n+1)\operatorname{dist}(i, i \bmod n + 1) 的最大可能值。她只需要知道这 nn 个值的和。请你帮助 Iris 快速得到答案。

注意,在分别计算 dist⁡(i,i mod n+1)\operatorname{dist}(i, i \bmod n + 1) 和 dist⁡(j,j mod n+1)\operatorname{dist}(j, j \bmod n + 1)(i≠ji \ne j)的最大可能值时,未知的边权可以不同。

输入格式

每个测试点包含多组测试数据。第一行包含一个整数 tt(1≤t≤1041 \leq t \leq 10^4),表示测试数据组数。每组测试数据描述如下:

每组测试数据的第一行包含两个整数 nn 和 ww(2≤n≤2⋅1052 \leq n \leq 2 \cdot 10^5,0≤w≤10120 \leq w \leq 10^{12}),表示树的结点数和边权和。

第二行包含 n−1n-1 个整数 p2,p3,…,pnp_2, p_3, \ldots, p_n(1≤pi<i1 \leq p_i < i),表示树的边的描述。

接下来有 n−1n-1 行,每行两个整数 xx 和 yy(2≤x≤n2 \leq x \leq n,0≤y≤w0 \leq y \leq w),表示 tx=yt_x = y。

保证所有事件中的 xx 互不相同,且所有 yy 的和等于 ww。

保证所有测试数据中 nn 的总和不超过 2⋅1052 \cdot 10^5。

输出格式

对于每组测试数据,输出一行包含 n−1n-1 个整数,分别表示每次事件后的答案。

输入输出样例

  • 输入#1

    4
    2 1000000000000
    1
    2 1000000000000
    4 9
    1 1 1
    2 2
    4 4
    3 3
    6 100
    1 2 3 2 1
    6 17
    3 32
    2 4
    4 26
    5 21
    10 511
    1 2 2 4 2 1 1 8 8
    3 2
    6 16
    10 256
    9 128
    2 1
    5 8
    8 64
    4 4
    7 32

    输出#1

    2000000000000
    25 18 18
    449 302 247 200 200
    4585 4473 2681 1567 1454 1322 1094 1022 1022

说明/提示

在第一个测试点中,dist⁡(1,2)=dist⁡(2,1)=t2=w=1012\operatorname{dist}(1, 2) = \operatorname{dist}(2, 1) = t_2 = w = 10^{12},所以 dist⁡(1,2)+dist⁡(2,1)=2⋅1012\operatorname{dist}(1, 2) + \operatorname{dist}(2, 1) = 2 \cdot 10^{12}。

在第二个测试点中,Iris 得知所有 txt_x 后的树如下图:

dist⁡(1,2)=t2\operatorname{dist}(1, 2) = t_2,dist⁡(2,3)=t2+t3\operatorname{dist}(2, 3) = t_2 + t_3,dist⁡(3,4)=t3+t4\operatorname{dist}(3, 4) = t_3 + t_4,dist⁡(4,1)=t4\operatorname{dist}(4, 1) = t_4。第一次事件后,t2=2t_2 = 2,所以 dist⁡(1,2)=2\operatorname{dist}(1, 2) = 2。同时:

  • 若 t3=7t_3 = 7,t4=0t_4 = 0,则 dist⁡(2,3)\operatorname{dist}(2, 3) 最大为 99。
  • 若 t3=0t_3 = 0,t4=7t_4 = 7,则 dist⁡(3,4)\operatorname{dist}(3, 4) 和 dist⁡(4,1)\operatorname{dist}(4, 1) 最大为 77。

因此,答案为 2+9+7+7=252 + 9 + 7 + 7 = 25。

第二次事件后,t4=4t_4 = 4,则 t3=w−t2−t4=4t_3 = w - t_2 - t_4 = 4。dist⁡(1,2)=2\operatorname{dist}(1, 2) = 2,dist⁡(2,3)=2+3=5\operatorname{dist}(2, 3) = 2 + 3 = 5,dist⁡(3,4)=3+4=7\operatorname{dist}(3, 4) = 3 + 4 = 7,dist⁡(4,1)=4\operatorname{dist}(4, 1) = 4。因此,答案为 2+5+7+4=182 + 5 + 7 + 4 = 18。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页