CF2114E.Kirei Attacks the Estate

普及/提高-

通过率:0%

AC君温馨提醒

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

题目描述

有一次,Kirei 偷偷潜入了 Ainzbern 家族布满陷阱的庄园,但被 Kiritugu 的使魔发现了。评估了自己的实力后,Kirei 决定撤退。庄园被表示为一棵有 nn 个结点的树,根节点为结点 11。树上每个结点 ii 都有一个数字 aia_i,表示结点 ii 的危险值。树是一个无环连通无向图。

为了顺利撤退,Kirei 需要计算每个结点的威胁值。一个结点的威胁值定义为:从该结点出发沿着向根的路径,所有“交错和”的最大值。结点 ii 的“交错和”定义为 ai−api+appi−…a_i - a_{p_i} + a_{p_{p_i}} - \ldots,其中 pip_i 表示 ii 的父节点(到根节点 11 的路径上)。

例如,在下图的树中,结点 44 有如下几条向根的路径:

  • [4][4],交错和为 a4=6a_4 = 6;
  • [4,3][4, 3],交错和为 a4−a3=6−2=4a_4 - a_3 = 6 - 2 = 4;
  • [4,3,2][4, 3, 2],交错和为 6−2+5=96 - 2 + 5 = 9;
  • [4,3,2,1][4, 3, 2, 1],交错和为 6−2+5−4=56 - 2 + 5 - 4 = 5。

结点的危险值用红色标出。请帮助 Kirei 计算所有结点的威胁值,并顺利逃离庄园。

输入格式

第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的数量。

接下来描述每个测试用例。

每个测试用例的第一行包含一个整数 nn(2≤n≤2×1052 \le n \le 2 \times 10^5),表示树的结点数。

第二行包含 nn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_n(1≤ai≤1091 \le a_i \le 10^9),表示每个结点的危险值。

接下来的 n−1n-1 行,每行包含两个整数 v,uv, u(1≤v,u≤n1 \le v, u \le n,v≠uv \neq u),表示树中的一条边。

保证所有测试用例中 nn 的总和不超过 2×1052 \times 10^5。保证给定的边集构成一棵树。

输出格式

对于每个测试用例,输出 nn 个整数,依次表示每个结点的威胁值。

输入输出样例

  • 输入#1

    2
    5
    4 5 2 6 7
    1 2
    3 2
    4 3
    5 1
    6
    1000000000 500500500 900900900 9 404 800800800
    3 4
    5 1
    2 5
    1 6
    6 4

    输出#1

    4 5 2 9 7 
    1000000000 1500500096 1701701691 199199209 404 800800800

说明/提示

第一个测试用例的树如题面所示,各结点的最大交错和如下:

  1. a1=4a_1 = 4;
  2. a2=5a_2 = 5;
  3. a3=2a_3 = 2;
  4. a4−a3+a2=6−2+5=9a_4 - a_3 + a_2 = 6 - 2 + 5 = 9;
  5. a5=7a_5 = 7。

由 ChatGPT 4.1 翻译

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

首页