#P10555. [ICPC 2024 Xi'an I] Fix the Tree

[ICPC 2024 Xi'an I] Fix the Tree

Description

给定一棵由 nn 个顶点组成的树。树中每个顶点 ii 都有一个值 wiw_i

现在顶点 uu 将被破坏。一旦被破坏,顶点 uu 和所有以 uu 为一端的边将从树中移除。

为了使树重新连通,你可以执行以下操作任意次(可能为零次),顺序不限:

  • 首先从树中选择两个顶点 uuvv
  • 然后支付 wu+wvw_u + w_v 个硬币,并在顶点 uuvv 之间添加一条边;
  • 最后,将 wu+1w_u + 1 替换为 wuw_u,将 wv+1w_v + 1 替换为 wvw_v

你的任务是计算需要支付的最小硬币数。

但你不知道哪个顶点是 uu,所以你需要为每个 1un1 \le u \le n 找到答案。请独立回答所有查询。

Input Format

第一行包含一个整数 n(2n106)n(2 \le n \le 10^6) —— 这棵树的顶点数。

接下来的一行包含 nn 个数,第 ii 个数是 wi(1win)w_i(1 \le w_i \le n)

接下来的 n1n-1 行包含树的边的描述。这些行中的第 ii 行包含两个整数 uiu_ivi(1ui,vin)v_i(1 \le u_i, v_i \le n) —— 由第 ii 条边连接的顶点的编号。

保证给定的边构成一棵树。

Output Format

输出 nn 个整数,第 ii 个整数是当 u=iu=i 时的答案。

6
1 1 1 1 1 1
1 2
1 3
1 4
2 5
2 6
4 4 0 0 0 0
4
1 2 3 4
1 2
1 3
1 4
12 0 0 0
7
1 2 3 4 5 6 7
1 2
1 3
2 4
2 5
3 6
3 7
5 12 16 0 0 0 0

Hint

给定一个有 nn 个点组成的树,每个点有一个权值 wiw_i。 点 uu 和相邻的边被删除。 你可以进行以下操作任意次数(可以为 00),让树重新成为连通图:

  1. 选择两个点 uuvv
  2. 花费 wu+wvw_u + w_v 的代价连接一条边 (u,v)(u,v)
  3. wuwu+1,wvwv+1w_u \leftarrow w_u+1, w_v \leftarrow w_v+1

对于每个 uu 计算最小代价。(由 ChatGPT 4o 翻译)