atcoder#MUJINPC2017D. Oriented Tree

Oriented Tree

配点 : 18001800

問題文

NN 頂点の木 TT があります。 頂点には 11 から NN までの番号が振られています。 各 1iN11 \leq i \leq N - 1 について、ii 番目の辺は頂点 aia_i と頂点 bib_i を繋いでいます。

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

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

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

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

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

3d2f3f88e8fa23f065c04cd175c14ebf.png

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

制約

  • 2N10002 \leq N \leq 1000
  • 1ai, biN1 \leq a_i,\ b_i \leq N
  • 入力のグラフは木である。

入力

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

NN

a1a_1 b1b_1

a2a_2 b2b_2

::

aN1a_{N - 1} bN1b_{N - 1}

出力

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

4
1 2
1 3
1 4
2

DD の最小値は 11 です。 DD が最小値をとるような TT' は、次図の 22 通りです。

4
1 2
2 3
3 4
6

DD の最小値は 22 です。 DD が最小値をとるような TT' は、次図の 66 通りです。

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