CF2114E.Kirei Attacks the Estate
普及/提高-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
有一次,Kirei 偷偷潜入了 Ainzbern 家族布满陷阱的庄园,但被 Kiritugu 的使魔发现了。评估了自己的实力后,Kirei 决定撤退。庄园被表示为一棵有 n 个结点的树,根节点为结点 1。树上每个结点 i 都有一个数字 ai,表示结点 i 的危险值。树是一个无环连通无向图。
为了顺利撤退,Kirei 需要计算每个结点的威胁值。一个结点的威胁值定义为:从该结点出发沿着向根的路径,所有“交错和”的最大值。结点 i 的“交错和”定义为 ai−api+appi−…,其中 pi 表示 i 的父节点(到根节点 1 的路径上)。
例如,在下图的树中,结点 4 有如下几条向根的路径:
- [4],交错和为 a4=6;
- [4,3],交错和为 a4−a3=6−2=4;
- [4,3,2],交错和为 6−2+5=9;
- [4,3,2,1],交错和为 6−2+5−4=5。
结点的危险值用红色标出。请帮助 Kirei 计算所有结点的威胁值,并顺利逃离庄园。
输入格式
第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
接下来描述每个测试用例。
每个测试用例的第一行包含一个整数 n(2≤n≤2×105),表示树的结点数。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤109),表示每个结点的危险值。
接下来的 n−1 行,每行包含两个整数 v,u(1≤v,u≤n,v=u),表示树中的一条边。
保证所有测试用例中 n 的总和不超过 2×105。保证给定的边集构成一棵树。
输出格式
对于每个测试用例,输出 n 个整数,依次表示每个结点的威胁值。
输入输出样例
输入#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
说明/提示
第一个测试用例的树如题面所示,各结点的最大交错和如下:
- a1=4;
- a2=5;
- a3=2;
- a4−a3+a2=6−2+5=9;
- a5=7。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?