#P8009. 「Wdsr-3」船往低处流

「Wdsr-3」船往低处流

题目背景

村纱水密是控制着圣辇船的船长。因为是一生和船相伴的船幽灵,因此对船只非常感兴趣。正因为这样的爱好,村纱有一大堆船模。

由于间歇泉的喷发,间歇泉的周围出现了一个汇聚了多方水流的大水坑。不同的水流交错,形成了大大小小的水道。只需要把船模放在某个位置,它就会顺着水流流动。根据物理原理,船自然会从高处流向低处。由于水坑由四处的水汇集而成,因此水坑的中央地势最低;随着到中央距离的增加,地势不断增加。

村纱发现,当她选定了两个位置放下船模后,它们会在某个水流的交汇处发生碰撞。村纱关心碰撞发生的位置。容易发现,第一个可能会产生碰撞的位置,就是在树形结构上这两个选定的点的最近公共祖先。

当然了,由于间歇泉并不稳定,因此水池中央的位置可能会不断变化,地势也不断变化,但是水道并不会发生任何改变。村纱给每个交汇处标上了一个数值「危险程度」,表示两个船模在此处碰撞可能会发生的危险的大小。村纱放置船模的位置也是随机的。

不过由于水坑实在是太大,水坑中央又不断变化,因此只关心船模的村纱被绕晕了。她迫切地想知道在水坑处玩船模产生的威胁,因此希望你帮她计算。

题目描述

这些水道形成了一棵以 11 为根的节点数为 nn 的树形结构 TT。每个节点上有一个点权 wiw_i,表示它的危险程度。现做出如下定义:

  • 最近公共祖先:在一棵以 rr 为根的有根树上,两个节点 u,vu,v 的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个,记作 lca(r,u,v)\operatorname{lca}(r,u,v)
  • 子树:树 TT 上,删掉节点 uu 与父亲相连的边后,该结点所在的子图记为子树 TuT_u。特别地,TT 本身可以认为是以 11 为根节点的子树 T1T_1
  • 危险值:对于 TuT_u 而言,它的危险值被定义为:
$$\mathrm{LCAS}(u)=\sum_{i\in T_u}\sum_{j\in T_u}\sum_{k\in T_u,k<j} w_{\operatorname{lca}(i,j,k)} $$

现在给出 TT,希望你对于 i=1,2,ni=1,2,\cdots n,求出 LCAS(i)\mathrm{LCAS}(i)

输入格式

  • 第一行有一个正整数 nn,表示节点的个数。
  • 第二行有 nn 个整数 wiw_i,表示每个结点的危险程度。
  • 接下来 n1n-1 行,每行有两个正整数 u,vu,v,描述 TT 中的一条边。

输出格式

  • nnnn 个整数,第 ii 个整数表示 LCAS(i)\mathrm{LCAS}(i) 的值对 998,244,353998,244,353(一个大质数)取模后的结果。
5
3 1 2 1 3
1 2
1 3
3 4
3 5

109
0
18
0
0
10
1 1 4 5 1 4 1 9 1 9
1 2
1 3
1 4
2 5
2 6
5 7
3 8
3 9
9 10
972
33
99
0
2
0
0
0
10
0

提示

样例 1 解释

样例一当中的树如下。红色的是节点,蓝色的是点权。

容易发现 $\mathrm{LCAS}(2)=\mathrm{LCAS}(4)=\mathrm{LCAS}(5)=0$。这里说明如何计算 LCAS(1)\mathrm{LCAS}(1)LCAS(3)\mathrm{LCAS}(3)。首先说明 LCAS(3)\mathrm{LCAS}(3)

  • 33 为根,那么有 $\mathrm{lca}(3,3,4)=\mathrm{lca}(3,3,5)=\mathrm{lca}(3,4,5)=3$,这部分的贡献是 3×w3=63\times w_3=6
  • 44 为根,那么有 $\mathrm{lca}(4,3,4)=\mathrm{lca}(4,4,5)=4,\mathrm{lca}(4,3,5)=3$,这部分的贡献是 2×w4+1×w3=42\times w_4+1\times w_3=4
  • 55 为根,那么有 $\mathrm{lca}(5,3,5)=\mathrm{lca}(5,4,5)=5,\mathrm{lca}(5,3,4)=3$,这部分的贡献是 2×w5+1×w3=82\times w_5+1\times w_3=8

因此,LCAS(3)=6+4+8=18\mathrm{LCAS}(3)=6+4+8=18。下面计算 LCAS(1)\mathrm{LCAS}(1)

$$\def\arraystretch{1.2} \begin{matrix} \textbf{以 1 为根 }\bm{\mathbf{lca}(1,i,j)} & \textbf{以 2 为根 }\bm{\mathbf{lca}(2,i,j)}\cr \begin{array}{c||c|c|c|c|c}\hline & 1 & 2 & 3 & 4 & 5 \cr\hline\hline 1 & - & - & - & - &- \cr\hline 2 & 1 & - & - & - &- \cr\hline 3 & 1 & 1 & - & - &- \cr\hline 4 & 1 & 1 & 3 & - &- \cr\hline 5 & 1 & 1 & 3 & 3 &- \cr\hline \end{array} & \begin{array}{c||c|c|c|c|c}\hline & 1 & 2 & 3 & 4 & 5 \cr\hline\hline 1 & - & - & - & - &- \cr\hline 2 & 2 & - & - & - &- \cr\hline 3 & 1 & 2 & - & - &- \cr\hline 4 & 1 & 2 & 3 & - &- \cr\hline 5 & 1 & 2 & 3 & 3 &- \cr\hline \end{array} \cr[50pt] \textbf{以 3 为根 }\bm{\mathbf{lca}(3,i,j)} & \textbf{以 4 为根 }\bm{\mathbf{lca}(4,i,j)}\cr \begin{array}{c||c|c|c|c|c}\hline & 1 & 2 & 3 & 4 & 5 \cr\hline\hline 1 & - & - & - & - &- \cr\hline 2 & 1 & - & - & - &- \cr\hline 3 & 3 & 3 & - & - &- \cr\hline 4 & 3 & 3 & 3 & - &- \cr\hline 5 & 3 & 3 & 3 & 3 &- \cr\hline \end{array} & \begin{array}{c||c|c|c|c|c}\hline & 1 & 2 & 3 & 4 & 5 \cr\hline\hline 1 & - & - & - & - &- \cr\hline 2 & 1 & - & - & - &- \cr\hline 3 & 3 & 3 & - & - &- \cr\hline 4 & 4 & 4 & 4 & - &- \cr\hline 5 & 3 & 3 & 3 & 4 &- \cr\hline \end{array} \end{matrix}\\[10pt] \textbf{以 5 为根 }\bm{\mathbf{lca}(5,i,j)}\\ \begin{array}{c||c|c|c|c|c}\hline & 1 & 2 & 3 & 4 & 5 \cr\hline\hline 1 & - & - & - & - &- \cr\hline 2 & 1 & - & - & - &- \cr\hline 3 & 3 & 3 & - & - &- \cr\hline 4 & 3 & 3 & 3 & - &- \cr\hline 5 & 5 & 5 & 5 & 5 &- \cr\hline \end{array} $$

容易发现,在上图中,11 出现了 1313 次,22 出现了 44 次,33 出现了 2525 次,44 出现了 44 次,55 出现了 44 次。因此,$\mathrm{LCAS}(1)=3\times 13+1\times 4+2\times 25+1\times 4+3\times 4=109$。

样例 2 解释

我有一个精妙绝伦的方法解释样例 22,可惜这里空白太小写不下。

本题输入量较大。请采用较快的读入方式。

数据范围及约定

$$\def\arraystretch{1.5} \begin{array}{|c|c|c|c|}\hline \textbf{Subtask} & \bm{n\le} & \textbf{特殊性质} & \textbf{分值}\cr\hline 1 & 100 & - & 20 \cr\hline 2 & 10^3 & - & 25 \cr\hline 3 & 10^5 & \text{A} & 10\cr\hline 4 & 10^5 & \text{B} & 10\cr\hline 5 & 10^6 & - & 35\cr\hline \end{array} $$

特殊性质 A\textbf{A}:保证第 ii 条边为 u=iu=iv=i+1v=i+1
特殊性质 B\textbf{B}:保证第 ii 条边为 u=1u=1v=i+1v=i+1

对于全部数据,保证 1n1061\le n\le 10^60wi<998,244,3530\le w_i<998,244,353