货物收集
题号:NC54148
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Venn想要收集一些货物。

Venn有一颗n个节点的树,一开始Venn在1号节点,其他每个节点都有一定的货物储备,Venn只要经过那些节点,就可以收集到节点的所有货物。每个节点的货物只能收集一次。

显然,Venn并不能轻易的收集所有的货物。每一条连接着两个节点的路径,都有一个邪恶的怪物镇守。Venn的武力值必须不小于怪物的武力值才能安全地从这条路径上通过。

Venn一开始的武力值是0,但是她可以选择健身来提升自己的武力值。每健身一分钟,就会提升一点武力值。Venn并不想收集所有的货物,只要最终收集到的货物总量不低于W就可以了。Venn一旦开始收集,就不能再健身了。但是Venn的速度很快,可以认为收集货物和从路径上经过都不需要时间。

由于Venn还急着去颓废,所以她想让你帮她计算收集到指定数量的货物最少需要几分钟。 

输入描述:

一行两个正整数n,W。

接下来一行,有n-1个正整数,第i个数字a_i表示编号为i+1节点的货物储备。

接下来n-1行,每行有三个正整数u,v,w,表示有一条路径链接编号为u,v的节点,并且路径上有一个武力值为w的怪物。

输出描述:

一行一个整数,表示最小时间花费。
示例1

输入

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

输出

复制
5

备注:

对于的数据,

对于的数据,,保证数据随机生成。

对于另外的数据,整棵树是一条链。

对于的数据,,保证所有点货物储备之和不小于W.