#P1154. 小红的树上切割

小红的树上切割

小红的树上切割

题目描述

小红有一棵 nn 个点的树,树上部分节点染成了红色,小红想切割一部分边,使得剩下的联通块内,每个联通块都有且仅有一个红色节点,问有多少种切割方案。
例如小红选择切割 kk 条边,那么剩下的点就会被分成 k+1k+1 个联通块,如果每个联通块都有且仅有一个红色节点,那么这个方案就是合法的。

输入格式

第一行一个整数 nn,表示树的节点数。
第二行 nn 个整数,第 ii 个整数 aia_i 表示第 ii 个节点的颜色,如果 ai=1a_i=1,表示第 ii 个节点是红色,否则 ai=0a_i = 0 表示不是红色。
接下来 n1n-1 行,每行两个整数 ui,viu_i,v_i,表示第 ii 条边连接的两个节点。
1n1051 \leq n \leq 10^5
1u,vn1 \leq u, v \leq n

输出格式

输出一个整数,表示方案数对 109+710^9+7 取模的结果。

样例 #1

样例输入 #1

5
1 0 1 1 0
1 2
2 3
2 4
4 5

样例输出 #1

3

提示

(1, 2), (2, 3), (2, 4) 三条边任选两条切割,剩下的联通块内都有且仅有一个红色节点。一共三种方案。