题号: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个数字
表示编号为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
                                 
                             
                            
                                                     
                     
                                                        备注:
                对于
的数据,
对于
的数据,
,保证数据随机生成。
对于另外
的数据,整棵树是一条链。
对于

的数据,

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