luogu#P7574. 「PMOI-3」子树

「PMOI-3」子树

题目背景

分割线下有形式化题面,可以配合食用。

题目描述

b6e0 有一棵树,树上第 ii 个点有价值 aia_i。每条边长度为 11

b6e0 会选择一个节点作为根节点。设这个节点为 rr。然后,b6e0 会圈定一个节点的整个子树作为他的领地,设这个子树的根节点为 uu。此时,树上的每个节点会给 b6e0 带来一些收益。在领地子树的根节点为 uu 的情况下,节点 xx 带来的收益 f(x,u)f(x,u) 定义如下:

  1. xxuu 的子树中时,它的收益为它父亲节点的收益加上它本身的价值 axa_x
  2. xx 不在 uu 的子树中时,它的收益为:与它相邻的节点中,与 uu 距离(到 uu 的简单路径长度)比 xxuu 的距离远的节点,这些节点的收益998244353998244353 取模的最大值,再乘上 axa_x

在根节点为 rr 的情况下,定义以 uu 为子树的收益 W(u)W(u) 为所有节点的 ff 值和。

当然,b6e0 有许多种选择根节点的方案。定义选 rr 为根节点的收益 C(r)C(r) 为对于所有 uu,以 uu 为子树的收益(W(u)W(u))的和。对于每一个节点 rr,求 C(r)C(r)


形式化题面:

给你一棵有 nn 个节点的树,第 ii 个节点有点权 aia_i,每条边的长度为 11。当根节点为 rr 时:

F(x)F(x) 表示 xx 的父亲节点,特殊地,F(r)=0F(r)=0D(x,y)D(x,y) 表示 xxyy 的简单路径的长度,特殊地,对于所有 xxD(x,x)=0D(x,x)=0AxA_x 表示 xx 的子树中的节点(包括 xx 本身)组成的集合,即 Ax={yD(x,y)=D(F(x),y)1}A_x=\{y\mid D(x,y)=D(F(x),y)-1\},特殊地,Ar={1,2,,n}A_r=\{1,2,\cdots,n\}BxB_x 表示与 xx 相邻的节点组成的集合,即 Bx={yD(x,y)=1}B_x=\{y\mid D(x,y)=1\}

定义 f(x,u)f(x,u)

$$f(x,u)=\begin{cases}f(F(x),u)+a_x&x\in A_u\\a_x\cdot\max_{y\in B_x,D(y,u)>D(x,u)}\{f(y,u)\bmod 998244353\}&x\not\in A_u\end{cases} $$

特殊地,对于所有 xxf(0,x)=0f(0,x)=0;在 x∉Aux\not\in A_u 的情况中,若对于所有 yBxy\in B_x,都有 D(y,u)D(x,u)D(y,u)\le D(x,u),则 f(x,u)=axf(x,u)=a_x

定义节点 uu 的分数 W(u)=v=1nf(v,u)W(u)=\sum_{v=1}^nf(v,u)

定义节点 rr 的收益 C(r)C(r) 表示以 rr 为根时,i=1nW(i)\sum_{i=1}^nW(i) 的值。

对于每一个节点 rr,求 C(r)C(r)

所有 C(r)C(r)998244353998244353 取模。

输入格式

第一行输入一个正整数 nn 表示这棵树的节点数。

第二行输入 nn 个整数,第 ii 表示节点 ii 的点权 aia_i

下面 n1n-1 行,每行输入两个正整数 u,vu,v,表示节点 uu 与节点 vv 之间有一条边。

输出格式

输出 nn 行,第 ii 行输出一个正整数表示节点 ii 的收益 C(i)C(i) 998244353998244353 取模的值。

6
7 2 5 100 1 5
1 3
3 4
1 2
4 5
4 6
67562
29930
75168
76888
63243
63283

提示

【样例解释】

样例中的树如下图:

例如在 r=1r=1u=5u=5 时,f(2,u)=a2=2f(2,u)=a_2=2f(1,u)=a1f(2,u)=14f(1,u)=a_1\cdot f(2,u)=14f(3,u)=a3f(1,u)=70f(3,u)=a_3\cdot f(1,u)=70f(6,u)=a6=5f(6,u)=a_6=5f(4,u)=a4max{f(3,u),f(6,u)}=7000f(4,u)=a_4\cdot\max\{f(3,u),f(6,u)\}=7000f(5,u)=f(4,u)+a5=7001f(5,u)=f(4,u)+a_5=7001

【数据范围】

  • Subtask1(10pts):n200n\le200ai103a_i\le 10^3
  • Subtask2(20pts):n103n\le10^3
  • Subtask3(20pts):树为一条链;
  • Subtask4(20pts):存在一个节点,使得它的度数为 n1n-1
  • Subtask5(30pts):无特殊限制。

对于 100%100\% 的数据,1n5×1051\le n\le5\times10^51ai1091\le a_i\le10^9