CF735E Ostap and Tree

题目描述

Ostap 已经在里约热内卢郊区定居,并开始在他的花园里种植一棵树。这里的“树”指的是一张连通且无环的无向图。 Ostap 种植的这棵树现在有 $n$ 个顶点。他想将一些顶点涂成黑色,使得从任意一个顶点 $u$ 出发,距离不超过 $k$ 的范围内至少有一个黑色顶点 $v$。两个顶点间的距离指的是它们之间的最短路径经过的边数。 由于涂色方案的数目可能非常大,Ostap 希望你输出其对 $10^9+7$ 取模的结果。如果存在一个顶点在一种方案中被染成黑色,而在另一种方案中没有被染成黑色,则这两种方案被认为是不同的。

输入格式

输入的第一行包含两个整数 $n$ 和 $k$($1\leq n\leq 100$,$0\leq k\leq \min(20, n-1)$)——表示树的顶点数以及任意顶点到最近的黑色顶点的最大允许距离。注意 $k$ 的特殊约束。 接下来的 $n-1$ 行每行包含两个整数 $u_i$ 和 $v_i$($1\leq u_i, v_i \leq n$),表示第 $i$ 条边连接了顶点 $u_i$ 和 $v_i$。保证输入构成一棵树。

输出格式

输出一个整数,表示把树染色的方案数对 $1000000007$($10^9+7$)取模的结果。

说明/提示

在第一个样例中,Ostap 必须将两个顶点都染成黑色。 在第二个样例中,只需要染其中一个顶点为黑色即可,因此答案是 $3$:Ostap 可以只染顶点 $1$,只染顶点 $2$,或者同时染顶点 $1$ 和 $2$。 在第三个样例中,所有合法的染色方案有:$\{1,3\}$,$\{1,4\}$,$\{2,3\}$,$\{2,4\}$,$\{1,2,3\}$,$\{1,2,4\}$,$\{1,3,4\}$,$\{2,3,4\}$,$\{1,2,3,4\}$。 由 ChatGPT 5 翻译