题号:NC17061
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
有一棵树包含 N 个节点,节点编号从 1 到 N。节点总共有 K 种颜色,颜色编号从 1 到 K。第 i 个节点的颜色为 A
i。
F
i 表示恰好包含 i 种颜色的路径数量。请计算:
%20%7D%20%20%5Cright)%20%7B%20mod%20%7D(%7B%2010%20%7D%5E%7B%209%20%7D%2B7))
输入描述:
第一行输入两个正整数 N 和 K,N 表示节点个数,K 表示颜色种类数量。
第二行输入 N 个正整数,A1, A2, A3, ... ..., AN,Ai 表示第 i 个节点的颜色。
接下来 N - 1 行,第 i 行输入两个正整数 Ui 和 Vi,表示节点 Ui 和节点 Vi 之间存在一条无向边,数据保证这 N-1 条边连通了 N 个节点。
1 ≤ N ≤ 50000.
1 ≤ K ≤ 10.
1 ≤ Ai ≤ K.
输出描述:
输出一个整数表示答案。
示例1
输入
复制
5 3
1 2 1 2 3
4 2
1 3
2 1
2 5