#P13816. mujin_pc_2017_d Oriented Tree

    ID: 13017 传统题 1000ms 256MiB 尝试: 1 已通过: 1 难度: 7 上传者: 标签>CF2200树形DP直径图论动态规划计数DP构造贪心

mujin_pc_2017_d Oriented Tree

题目描述

有一棵树 TT,它包含 NN 个顶点,编号为 11NN。对于每一个 1iN11 ≤ i ≤ N - 1,第 ii 条边连接顶点 aia_ibib_i

Snuke 正在通过任意为 TT 中的每条边分配方向来构建一个有向图 TT'。(总共有 2N12^{N - 1} 种不同的方法来构建 TT'。)

对于一个固定的 TT',我们定义 d(s,t)d(s,t) 对于每个 1s,tN1 ≤ s,t ≤ N,如下:

  • d(s,t)=d(s,t) = 当从顶点 ss 到顶点 tt 的过程中,必须逆着指定方向遍历的边的数量。

特别地,对于每个 1sN1 ≤ s ≤ Nd(s,s)=0d(s,s) = 0。另外,通常情况下,d(s,t)d(t,s)d(s,t) ≠ d(t,s)

我们进一步定义 D=max1s,tNd(s,t)D=\max\limits_{1\leq s,t\leq N}d(s,t)

Snuke 正在构建 TT' 使得 DD 的值尽可能小。那么有多少种不同的方法可以构建 TT' 以使得 DD 的值尽可能小,并且结果对 109+710^9 + 7 取模?

约束条件

  • 2N10002 ≤ N ≤ 1000
  • 1ai, biN1 ≤ a_i,\ b_i ≤ N
  • 给定的图是一个树。

输入格式

从标准输入接收以下格式的输入:

NN
a1a_1 b1b_1
a2a_2 b2b_2
::
aN1a_{N - 1} bN1b_{N - 1}

输出格式

输出使得 DD 取最小值的不同构建方式数量,对 109+710^9 + 7 取模。

样例 1\bm1 解释

DD 的最小值为 11。有两种方式构建 TT' 以达到这个值,如下图所示:

样例 2\bm2 解释

DD 的最小值为 22。有六种方式构建 TT' 以达到这个值,如下图所示:

输入输出样例 #1

输入 #1

4
1 2
1 3
1 4

输出 #1

2

输入输出样例 #2

输入 #2

4
1 2
2 3
3 4

输出 #2

6

输入输出样例 #3

输入 #3

6
1 2
1 3
1 4
2 5
2 6

输出 #3

14

输入输出样例 #4

输入 #4

10
2 4
2 5
8 3
10 7
1 6
2 8
9 5
8 6
10 6

输出 #4

102