Codeforces Round 277 (Div. 2)
D
Valid Sets
Codeforces
2100
原题
← CE →
翻译中…

As you know, an undirected connected graph with $*n*$ nodes and $*n* - 1$ edges is called a tree. You are given an integer $*d*$ and a tree consisting of $*n*$ nodes. Each node $*i*$ has a value $*a*_{*i*}$ associated with it.

翻译中…

We call a set $*S*$ of tree nodes valid if following conditions are satisfied:

翻译中…
  1. $*S*$ is non-empty.
  2. $*S*$ is connected. In other words, if nodes $*u*$ and $*v*$ are in $*S*$, then all nodes lying on the simple path between $*u*$ and $*v*$ should also be presented in $*S*$.
  3. image.
翻译中…

Your task is to count the number of valid sets. Since the result can be very large, you must print its remainder modulo $1000000007$ ($10^{9} + 7$).

翻译中…

Input

翻译中…

The first line contains two space-separated integers $*d*$ ($0 ≤ *d* ≤ 2000$) and $*n*$ ($1 ≤ *n* ≤ 2000$).

翻译中…

The second line contains $*n*$ space-separated positive integers $*a*_{1}, *a*_{2}, ..., *a*_{*n*}$($1 ≤ *a*_{*i*} ≤ 2000$).

翻译中…

Then the next $*n* - 1$ line each contain pair of integers $*u*$ and $*v*$ ($1 ≤ *u*, *v* ≤ *n*$) denoting that there is an edge between $*u*$ and $*v*$. It is guaranteed that these edges form a tree.

翻译中…

Output

翻译中…

Print the number of valid sets modulo $1000000007$.

翻译中…

Note

翻译中…

In the first sample, there are exactly 8 valid sets: ${1}, {2}, {3}, {4}, {1, 2}, {1, 3}, {3, 4}$ and ${1, 3, 4}$. Set ${1, 2, 3, 4}$ is not valid, because the third condition isn't satisfied. Set ${1, 4}$ satisfies the third condition, but conflicts with the second condition.

翻译中…

样例

Input #1
1 4
2 1 3 2
1 2
1 3
3 4
Output #1
8
InputCopy OutputCopy
Input #2
0 3
1 2 3
1 2
2 3
Output #2
3
InputCopy OutputCopy
Input #3
4 8
7 8 7 5 4 6 4 10
1 6
1 2
5 8
1 3
3 5
6 7
3 4
Output #3
41
InputCopy OutputCopy
题目信息
题号
486D
时间限制
1 s
内存限制
256 MB
标签
DFS 及类似
动态规划
数学
树

题面与样例版权归 Codeforces 及出题人所有;中文翻译由 AI 生成(CI 管线),如有出入请以原文为准。