题库练习 Valid Sets
← 上一题 下一题 →

A9748 | Valid Sets

时间限制1s
内存限制256MB
通过 / 提交0/0

题目描述

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. ![](/uploads/acgo/image/cdf3fc1936513a35_e52aa2a57c21.jpeg).

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$ ).

输入格式

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

The second line contains $n$ space-separated positive integers $a_1, a_2, \ldots, a_n$ ($1 \le a_i \le 2000$).

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

输出格式

Print the number of valid sets modulo $1000000007$ .

输入输出样例

输入 #1
1 4
2 1 3 2
1 2
1 3
3 4
输出 #1
8
输入 #2
0 3
1 2 3
1 2
2 3
输出 #2
3
输入 #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
输出 #3
41
C++ 编辑器
输入
输出