#P16163. [ICPC 2016 NAIPC] YATP

[ICPC 2016 NAIPC] YATP

题目描述

这又是一个树论问题。给定一棵树,每个节点有一个罚值,每条边有一个权重。任意两个节点之间简单路径的代价定义为路径上所有边的权重之和,加上两个端点节点的罚值之积。注意,路径可以包含 00 条边,此时路径的代价就是该节点罚值的平方。

对于每个节点,请计算从该节点出发的所有路径中的最小代价。最终答案等于所有这些最小代价的总和。

输入格式

每个输入包含单个测试用例。请注意,你的程序可能会在不同输入上多次运行。输入的第一行包含一个整数 nn1n200,0001 \leq n \leq 200{,}000),表示节点的数量。下一行包含 nn 个空格分隔的整数 pp1p1,000,0001 \leq p \leq 1{,}000{,}000),按顺序表示每个节点的罚值。接下来的 n1n-1 行,每行包含三个空格分隔的整数 iijjww1in1 \leq i \leq n1jn1 \leq j \leq niji \neq j1w1,000,0001 \leq w \leq 1{,}000{,}000),表示节点 ii 和节点 jj 之间有一条权重为 ww 的边。

输出格式

输出一个整数,表示每个节点的最低代价路径的代价之和。

5
9 7 1 1 9
3 2 8
5 2 10
4 3 10
2 1 2
63

提示

翻译由 DeepSeek V3.2 完成