B 天平
题号:NC223205
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

小 Y 有 m 种无穷多的物品以及一根杆子。他希望用它们做成一根如下的天平。

天平的性质是对于任意一个物品下面连着的杆子,在不计杆重的情况下可以平衡。同时,不允许存在某个点到其左右连着的物品杆长不是整数。

现在小 Y 想要知道,要想挂 n 个物品在一个固定形状的天平上且天平平衡,最少需要用的杆子的长度。

形式化的,现有一棵有 n 个有 0 或 2 个儿子的节点的二叉树。你可以给每个节点赋权给定的 m 个数中的任意一个。记每个节点的子树的和为 s_i

随后你需要给每个非叶子点赋正整数权值 L_i, R_i 使得 。求所有 L 和 R 的和的最小值。

输入描述:

第一行,n,m。

第二行,m 个数,表示每种物品的质量。

接下来若干行,每行三个数 u,x,y。表示在 u 物品下的两个物品编号分别为 x,y。行数是可以推知的。

保证整个树形结构的根是 1。

输出描述:

一行,表示最终的答案。
示例1

输入

复制
3 3
2 3 4
1 2 3

输出

复制
2
示例2

输入

复制
7 3
1 3 4
1 2 3
3 4 5
4 6 7

输出

复制
8