Logo Universal Online Judge

UOJ

时间限制:1 s 空间限制:512 MB
统计

2.1 题目描述
给定一棵包含 n 个结点的树,结点编号为 1 到 n。有 k 种颜色,可以用 [1, k] 范围内的整数 表示。
某些结点的颜色已经确定了,你要给其余结点染色,但需保证相邻结点颜色不同。求染色方案 数,对 $10^9 + 7$ 取模。
2.2 输入输出格式
2.2.1 输入格式

第一行,两个整数 n, k。
第二行,n 个整数 a1, a2,... , an,描述每个点的颜色。若 ai = 0 则 i 号点未染色。
接下来 n − 1 行,每行两个整数 uj , vj,描述树上的一条边。
2.2.2 输出格式
一行,一个整数,表示染色方案数对 $10^9 + 7 $取模的结果。
2.3 样例
2.3.1 样例输入 1

4 3
0 0 1 2
1 2
2 3
2 4
2.3.2 样例输出 1

2
2.3.3 样例输入 2

4 3
1 0 0 0
1 2
2 3
2 4
2.3.4 样例输出 2

8
2.4 限制
对于前 15% 的数据,n, k ≤ 300。
对于前 30% 的数据,k ≤ 3000。
对于前 50% 的数据,n ≤ 3000。
对于前 70% 的数据,$n ≤ 10^5$。
对于另外 10% 的数据,每个结点度数不超过 2。
对于 100% 的数据,$1 ≤ n ≤ 3 × 10^5, 2 ≤ k ≤ 10^9$。
保证 0 ≤ ai ≤ k,输入的树合法。