编程题
### 问题描述
在蓝桥小学的课堂上,小蓝老师把糖果摆成了一颗树的形状,老师让同学们来选糖果,选中的糖果就可以直接拿走,但是有如下规则:
1. $1$ 号节点是**根节点**,可以被无条件选中。
2. 如果要选中节点 $v$,那么他的父节点必须已经被选中。
3. 当父节点 $u$ 被选中后,他的**直接儿子节点**最多只能选 $k_u$ 个。
直接儿子节点:与父亲节点距离为 $1$ 的子节点。
小桥很贪吃,他想知道他最多可以选中多少个糖果。
### 输入格式
第一行输入一个整数 $N$ ,代表糖果总个数。
接下来 $N-1$ 行,每行两个整数 $u_i,v_i$ ,代表 $u_i,v_i$ 之间有一条边。
最后输入 $N$ 个整数,$k_1,k_2......k_n$,代表选中编号为 $i$ 的树可选儿子数的限制。
### 输出格式
输出一个整数,最大可以选中的糖果数量。
### 样例输入
```
5
1 2
1 3
2 4
3 5
1 0 1 0 2
```
### 样例输出
```
3
```
### 说明
$ 3\le N \le 10^5$, $0 \le k_i\le 10^5,1 \le u_i,v_i \le N $ 。
每个节点的儿子数并不一定相同。