luogu#P8009. 「Wdsr-3」船往低处流
「Wdsr-3」船往低处流
题目背景
村纱水密是控制着圣辇船的船长。因为是一生和船相伴的船幽灵,因此对船只非常感兴趣。正因为这样的爱好,村纱有一大堆船模。
由于间歇泉的喷发,间歇泉的周围出现了一个汇聚了多方水流的大水坑。不同的水流交错,形成了大大小小的水道。只需要把船模放在某个位置,它就会顺着水流流动。根据物理原理,船自然会从高处流向低处。由于水坑由四处的水汇集而成,因此水坑的中央地势最低;随着到中央距离的增加,地势不断增加。
村纱发现,当她选定了两个位置放下船模后,它们会在某个水流的交汇处发生碰撞。村纱关心碰撞发生的位置。容易发现,第一个可能会产生碰撞的位置,就是在树形结构上这两个选定的点的最近公共祖先。
当然了,由于间歇泉并不稳定,因此水池中央的位置可能会不断变化,地势也不断变化,但是水道并不会发生任何改变。村纱给每个交汇处标上了一个数值「危险程度」,表示两个船模在此处碰撞可能会发生的危险的大小。村纱放置船模的位置也是随机的。
不过由于水坑实在是太大,水坑中央又不断变化,因此只关心船模的村纱被绕晕了。她迫切地想知道在水坑处玩船模产生的威胁,因此希望你帮她计算。
题目描述
这些水道形成了一棵以 为根的节点数为 的树形结构 。每个节点上有一个点权 ,表示它的危险程度。现做出如下定义:
- 最近公共祖先:在一棵以 为根的有根树上,两个节点 的最近公共祖先,就是这两个点的公共祖先里面,离根最远的那个,记作 。
- 子树:树 上,删掉节点 与父亲相连的边后,该结点所在的子图记为子树 。特别地, 本身可以认为是以 为根节点的子树 。
- 危险值:对于 而言,它的危险值被定义为:
现在给出 ,希望你对于 ,求出 。
输入格式
- 第一行有一个正整数 ,表示节点的个数。
- 第二行有 个整数 ,表示每个结点的危险程度。
- 接下来 行,每行有两个正整数 ,描述 中的一条边。
输出格式
- 共 行 个整数,第 个整数表示 的值对 (一个大质数)取模后的结果。
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$。这里说明如何计算 和 。首先说明 :
- 以 为根,那么有 $\mathrm{lca}(3,3,4)=\mathrm{lca}(3,3,5)=\mathrm{lca}(3,4,5)=3$,这部分的贡献是 。
- 以 为根,那么有 $\mathrm{lca}(4,3,4)=\mathrm{lca}(4,4,5)=4,\mathrm{lca}(4,3,5)=3$,这部分的贡献是 。
- 以 为根,那么有 $\mathrm{lca}(5,3,5)=\mathrm{lca}(5,4,5)=5,\mathrm{lca}(5,3,4)=3$,这部分的贡献是 。
因此,。下面计算 。
$$\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} $$容易发现,在上图中, 出现了 次, 出现了 次, 出现了 次, 出现了 次, 出现了 次。因此,$\mathrm{LCAS}(1)=3\times 13+1\times 4+2\times 25+1\times 4+3\times 4=109$。
样例 2 解释
我有一个精妙绝伦的方法解释样例 ,可惜这里空白太小写不下。
本题输入量较大。请采用较快的读入方式。
数据范围及约定
$$\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} $$特殊性质 :保证第 条边为 ,。
特殊性质 :保证第 条边为 ,。
对于全部数据,保证 ,。