AT_scpc2026_div2_k Cosmic Playground

题目描述

在探索银河系时,Navi 和 Hyeongtae 发现了一个宇宙游乐场!这个宇宙游乐场由 $N$ 个点和 $N-1$ 条双向通道组成。游乐场的每个点从 $1$ 到 $N$ 编号。第 $i$ 条通道将 $u_i$ 和 $v_i$ 两点双向连接。保证任意两点之间都可以通过这些通道连接通行。换句话说,这个宇宙游乐场的结构是一棵树。 每个点都连有一条滑梯。对于一个长度为 $N$ 的排列 $P = [P_1, P_2, \dots, P_N]$,第 $i$ 个点的滑梯会将你移动到第 $P_i$ 个点。 Navi 想一直不停地滑滑梯以享受速度的快感。而 Hyeongtae 担心如果 Navi 滑得太远,可能会在宇宙中迷失。经过深思熟虑,Navi 和 Hyeongtae 将某个点 $r$ 的**风险值** $f(r)$ 定义如下: - 两点 $a$ 与 $b$ 之间的**距离**,是仅通过通道从 $a$ 到 $b$ 需要经过的最少通道数量。 - Navi 从点 $s$ 出发,仅通过滑梯不断移动,而 Hyeongtae 固定在点 $r$ 观察 Navi。点 $r$ 到 Navi 能到达的所有点中最远点的距离,定义为**最大距离** $d(r, s)$。 - Hyeongtae 停留在点 $r$ 时的**风险值** $f(r)$,定义为当 Navi 从每个点出发时所有最大距离的总和,即 $f(r) = \sum\limits_{s=1}^N d(r, s)$。 Hyeongtae 希望停留在使风险值最小的点上。请帮他计算每个点的风险值。 什么是排列?长度为 $N$ 的**排列**,是指恰好包含 $1$ 到 $N$ 每个整数且各不相同的一个序列。例如,$[2, 1, 4, 3]$ 是排列,$[4, 2, 1, 1]$ 和 $[1, 2, 3, 5]$ 不是。

输入格式

从标准输入读入,格式如下: > $N$ $P_1$ $P_2$ $\dots$ $P_N$ $u_1$ $v_1$ $u_2$ $v_2$ $\vdots$ $u_{N-1}$ $v_{N-1}$

输出格式

输出 $N$ 个整数 $f(1), f(2), \dots, f(N)$,以空格分隔,每个整数表示每个点的风险值。

说明/提示

### 数据范围 - $3 \le N \le 100\,000$ - $1 \le u_i < v_i \le N$ - 给定的图是一棵树。 - $P$ 是一个排列。 - 所有输入值均为整数。 由 ChatGPT 5 翻译