#MUJINPC2017D. Oriented Tree

Oriented Tree

题目描述

N N 頂点の木 T T があります。 頂点には 1 1 から N N までの番号が振られています。 各 1 < = i < = N  1 1\ <\ =\ i\ <\ =\ N\ -\ 1 について、i i 番目の辺は頂点 ai a_i と頂点 bi b_i を繋いでいます。

すぬけ君は、T T のすべての辺をそれぞれ好きな向きに向き付け、有向グラフ T T' を作ろうとしています。 (T T' 2N  1 2^{N\ -\ 1} 通りありえます。)

T T' をひとつ固定したとき、各 1 < = s, t < = N 1\ <\ =\ s,\ t\ <\ =\ N について d(s, t) d(s,\ t) を次のように定義します。

  • d(s, t) = d(s,\ t)\ = (頂点 s s から頂点 t t までのパスに沿って T T' 上を移動するとき、辺の向きと逆向きに通るような辺の本数)

特に、各 1 < = s < = N 1\ <\ =\ s\ <\ =\ N について d(s, s) = 0 d(s,\ s)\ =\ 0 です。 また、一般に d(s, t)  d(t, s) d(s,\ t)\ ≠\ d(t,\ s) であることに注意してください。

さらに、D D を次のように定義します。

3d2f3f88e8fa23f065c04cd175c14ebf.png

すぬけ君は、D D が最小値をとるように T T' を作ろうとしています。 D D が最小値をとるような T T' は何通りありうるでしょうか? 109 + 7 10^9\ +\ 7 で割った余りを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N a1 a_1 b1 b_1 a2 a_2 b2 b_2 : : aN  1 a_{N\ -\ 1} bN  1 b_{N\ -\ 1}

输出格式

D D が最小値をとるような T T' は何通りありうるか? 109 + 7 10^9\ +\ 7 で割った余りを出力せよ。

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

提示

制約

  • 2 < = N < = 1000 2\ <\ =\ N\ <\ =\ 1000
  • 1 < = ai, bi < = N 1\ <\ =\ a_i,\ b_i\ <\ =\ N
  • 入力のグラフは木である。

Sample Explanation 1

D D の最小値は 1 1 です。 D D が最小値をとるような T T' は、次図の 2 2 通りです。 ![](https://atcoder.jp/img/mujin/de49901ddf69d8565fde5b6870afb595.png)

Sample Explanation 2

D D の最小値は 2 2 です。 D D が最小値をとるような T T' は、次図の 6 6 通りです。 ![](https://atcoder.jp/img/mujin/dcb377e8c7fe15d6dd0cb815dc57c41a.png)