AT_mujin_pc_2017_d Oriented Tree

题目描述

有一棵树 $T$,它包含 $N$ 个顶点,编号为 $1$ 到 $N$。对于每一个 $1 ≤ i ≤ N - 1$,第 $i$ 条边连接顶点 $a_i$ 和 $b_i$。 Snuke 正在通过任意为 $T$ 中的每条边分配方向来构建一个有向图 $T'$。(总共有 $2^{N - 1}$ 种不同的方法来构建 $T'$。) 对于一个固定的 $T'$,我们定义 $d(s,t)$ 对于每个 $1 ≤ s,t ≤ N$,如下: - $d(s,t) = $ 当从顶点 $s$ 到顶点 $t$ 的过程中,必须逆着指定方向遍历的边的数量。 特别地,对于每个 $1 ≤ s ≤ N$,$d(s,s) = 0$。另外,通常情况下,$d(s,t) ≠ d(t,s)$。 我们进一步定义 $D=\max\limits_{1\leq s,t\leq N}d(s,t)$。 Snuke 正在构建 $T'$ 使得 $D$ 的值尽可能小。那么有多少种不同的方法可以构建 $T'$ 以使得 $D$ 的值尽可能小,并且结果对 $10^9 + 7$ 取模? ### 约束条件 - $2 ≤ N ≤ 1000$ - $1 ≤ a_i,\ b_i ≤ N$ - 给定的图是一个树。

输入格式

从标准输入接收以下格式的输入: > $N$ $a_1$ $b_1$ $a_2$ $b_2$ $:$ $a_{N - 1}$ $b_{N - 1}$

输出格式

输出使得 $D$ 取最小值的不同构建方式数量,对 $10^9 + 7$ 取模。 ### 样例 $\bm1$ 解释 $D$ 的最小值为 $1$。有两种方式构建 $T'$ 以达到这个值,如下图所示: ![](https://atcoder.jp/img/mujin/de49901ddf69d8565fde5b6870afb595.png) ### 样例 $\bm2$ 解释 $D$ 的最小值为 $2$。有六种方式构建 $T'$ 以达到这个值,如下图所示: ![](https://atcoder.jp/img/mujin/dcb377e8c7fe15d6dd0cb815dc57c41a.png)

说明/提示

### 制約 - $ 2\