小可爱率领的部队现在面对的是敌军在这一地区的驻军,敌国战争机器的运作很大程度上依赖指挥,所以敌军内部是严明分级的,就是说,全部敌军可以看作一棵树,每只敌军部队(树上每个节点)有其战斗力。你可以对任意敌军部队发动进攻,小可爱的部队有战斗力p,意味着他的每次进攻将使得被进攻的这支部队的战斗力减少p,对上级指挥系统的打击同时会影响其下级部队。具体来说,当他对点i发动进攻,部队i的战力减少p的同时,对于其子树内点j,部队j的战力减少Max(0,p−dis(i,j)2)(dis(i,j)表示点i,j间简单路径的长度)。如果某支部队战力小于0,那么这支部队就被消灭了,一支部队被消灭不会改变敌军编制(即这棵树的结构不会改变)。
小可爱想知道,你的部队最少发动几次进攻,才能全歼敌军
由于小可爱还要爆手速发展自己实力,所以把这个问题交给了你。第一行两个正整数n,p,分别表示德军部队数目和你部战斗力
第二行n个正整数,表示德军各部战斗力mi
第三行到第n+1行,每行两个正整数i,j,表示i,j两支部队存在从属关系(i为j的上级)
输出一个整数,表示最少进攻次数
ps:
1,敌军以一号部队为司令部,即这棵树的根节点为1
2,你不能对已经被消灭的部队发动进攻
提示:
1,本题数据范围差距较大,分层明显
2,本题输入数据较大,请不要使用cin
对于100%的数据,n<=1000000;p,mi<=1e9