风斩冰华
题号:NC21480
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

Kazakiri 是学园都市的人工天使,在必要情况下可以通过某种催发的方式使得虚数学区之匙进入”保险丝“状态,从而抵御外来的入侵。这天,学园都市的理事长在激活“保险丝”的时候遇到了点麻烦,Kazakiri 被某种魔法术式所封印,必须要尽可能破坏术式才能激活 Kazakiri。

封印 Kazakiri 的术式是由一系列魔法阵组成的,每一个魔法阵都有一个魔力值 ai 。这些魔法阵可以看做一棵大小为 n 的树,魔法阵之间被 n - 1 条强大的魔力羁绊加固,形成一个天使封印术式。

万幸的是,「幻想杀手」可以在特定情况下破坏这些魔法阵,如果一个魔法阵被破坏,那么与它相连的魔力羁绊也会被破坏。

具体来说,如果一个魔法阵在某一时刻与其相连的魔力羁绊数量在 l 到 r 之间,那么其就可以被「幻想杀手」破坏,此外没有别的手段可以破坏这些魔法阵。

现在学园都市的理事长想要尽可能多的破坏魔法阵,请你帮他找出一种破坏方案,最大化被破坏的魔法阵的魔力值之和。

输入描述:

第一行三个数 n, l, r。
接下来一行 n 个数 ai
接下来 n - 1 行,每行两个数 x, y 表示魔法阵 x, y 之间有一条无向的魔力羁绊

输出描述:

输出共一个数,表示最多能破坏的魔法阵的个数。
示例1

输入

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

输出

复制
2

备注:

1 ≤ l ≤ r ≤ n ≤ 5 x 105, -109≤ ai ≤ 109