CFCF2209F.Dynamic Values And Maximum Sum

省选/NOI-

通过率:0%

AC君温馨提醒

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

题目描述

给定一棵有 nn 个顶点的树 ^{\text{∗}},顶点编号为 11nn,每个顶点 ii 有一个初始值 aia_i。你可以执行 kk 次操作,总和初始为 00。每次操作如下:

  1. 选择一个顶点 rr,并将树的根定为 rr
  2. 将当前 rr 的值加到总和中,并将 rr 的值设为 00
  3. 对于每个不是叶子的顶点 uu,在 uu 的子树 ^{\text{‡}} 中,找到距离 uu 最远的叶子 ^{\text{†}};若有多个,则选择编号最小的那个,记为 uu 的目的地。将 uu 当前的值加到目的地的值上,并将 uu 的值设为 00

请你求出可能得到的最大总和。

^{\text{∗}} 树是无环连通图。

^{\text{†}} 叶子是没有子节点的顶点。

^{\text{‡}} 顶点 vv 的子树是 vv、其所有后代以及它们之间所有边所构成的子图。

输入格式

每个测试包含多个测试用例。第一行包含测试用例数 tt1t1041 \le t \le 10 ^ 4)。接下来是每个测试用例的描述。

每个测试用例的第一行包含两个整数 nnkk1kn31051 \le k \le n \le 3 \cdot 10^5)。

第二行包含 nn 个整数 a1,a2,,ana_1, a_2, \ldots, a_n1ai1091\le a_i \le 10^9),表示各顶点的初始值。

随后的 n1n-1 行,每行包含两个整数 u,vu, v,表示 uuvv 之间有一条边。保证这些边构成一棵树。

保证所有测试用例中 nn 的总和不超过 31053\cdot 10 ^ 5

输出格式

对于每个测试用例,输出一个整数,表示可能得到的最大总和。

输入输出样例

  • 输入#1

    7
    5 4
    19 20 39 81 2
    1 2
    1 3
    2 4
    2 5
    5 3
    12 21 39 8 21
    1 2
    1 3
    3 4
    2 5
    5 2
    129 216 32 83 221
    1 2
    1 3
    3 4
    4 5
    5 3
    15 15 15 15 15
    1 2
    1 3
    1 4
    1 5
    1 1
    1
    2 1
    1 1000000000
    1 2
    7 2
    8 3 5 7 9 1 6
    4 3
    7 5
    5 2
    2 3
    3 6
    6 1

    输出#1

    161
    101
    681
    60
    1
    1000000000
    32

说明/提示

在第一个测试用例中:

  1. 选择顶点 11 作为根。将 a1=19a_1=19 加入总和,并置 a1=0a_1=0。以 11 为根时,对每个非叶子顶点 uu,将其值传递给其子树中距离 uu 最远的叶子(如有多解,取编号最小者)。具体如下:

    • 顶点 22 的值传递给顶点 44a2a_2 变为 00a4a_4 变为 101101
    • 顶点 334455 的值均不变化。
  2. 选择顶点 33 作为根。将 a3=39a_3=39 加入总和,并置 a3=0a_3=0。以 33 为根时,4455 上的值仍保留原位置。

  3. 选择顶点 44 作为根。将 a4=101a_4=101 加入总和,并置 a4=0a_4=0。以 44 为根时,55 上的值仍保留原位置。

  4. 选择顶点 55 作为根。将 a5=2a_5=2 加入总和,并置 a5=0a_5=0

最终总和为 19+39+101+2=16119+39+101+2=161

在第六个测试用例中,选择顶点 22 作为根,则总和为 10000000001 \, 000 \, 000 \, 000

首页