atcoder#ARC087D. [ARC087F] Squirrel Migration

[ARC087F] Squirrel Migration

配点 : 800800

問題文

NN 頂点の木があります。 頂点には 11 から NN まで番号が振られています。 ii (1iN11 \leq i \leq N - 1) 番目の辺は頂点 xix_iyiy_i を結んでいます。 頂点 vv, ww (1v,wN1 \leq v, w \leq N) について、vv, ww 間の距離 d(v,w)d(v, w) を「パス vv-ww に含まれる辺の本数」と定義します。

木の各頂点にはリスが 11 匹ずつ住んでいます。 リスたちは次のようにして引っ越しをすることにしました。 まず、(1,2,...,N)(1, 2, ..., N) の順列 p=(p1,p2,...,pN)p = (p_1, p_2, ..., p_N) を自由にひとつ選びます。 その後、各 1iN1 \leq i \leq N について、頂点 ii に住んでいたリスは頂点 pip_i へ引っ越します。

リスたちは移動が好きなので、各リスの移動距離の総和が最大になるように引っ越しをすることにしました。 すなわち、d(1,p1)+d(2,p2)+...+d(N,pN)d(1, p_1) + d(2, p_2) + ... + d(N, p_N) が最大になるように pp を選ぶことにしました。 このような pp の選び方は何通りあるでしょうか? 109+710^9 + 7 で割った余りを求めてください。

制約

  • 2N5,0002 \leq N \leq 5,000
  • 1xi,yiN1 \leq x_i, y_i \leq N
  • 入力のグラフは木である。

入力

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

NN

x1x_1 y1y_1

x2x_2 y2y_2

::

xN1x_{N - 1} yN1y_{N - 1}

出力

条件を満たすような pp の選び方は何通りあるか? 109+710^9 + 7 で割った余りを求めよ。

3
1 2
2 3
3

各リスの移動距離の総和の最大値は 44 です。 条件を満たす pp は次の 33 通りです。

  • (2,3,1)(2, 3, 1)
  • (3,1,2)(3, 1, 2)
  • (3,2,1)(3, 2, 1)
4
1 2
1 3
1 4
11

各リスの移動距離の総和の最大値は 66 です。 例えば、p=(2,1,4,3)p = (2, 1, 4, 3) は条件を満たします。

6
1 2
1 3
1 4
2 5
2 6
36
7
1 2
6 3
4 5
1 7
1 5
2 3
396