atcoder#ARC130D. [ARC130D] Zigzag Tree

[ARC130D] Zigzag Tree

配点 : 600600

問題文

NN 頂点からなる木が与えられます。頂点には 11 から NN までの番号がついており、ii 番目の辺は頂点 aia_ibib_i を結んでいます。

正整数列 P=(P1,P2,,PN)P = (P_1, P_2, \ldots, P_N) であって、以下の条件を満たすものの個数を 998244353998244353 で割った余りを求めてください。

  • 1PiN1\leq P_i\leq N
  • iji\neq j ならば PiPjP_i\neq P_j
  • 1a,b,cN1\leq a, b, c\leq N に対して頂点 aa と 頂点 bb、頂点 bb と頂点 cc がともに隣接しているならば、Pa<Pb>PcP_a < P_b > P_c または Pa>Pb<PcP_a > P_b < P_c が成り立つ。

制約

  • 2N30002\leq N\leq 3000
  • 1ai,biN1\leq a_i, b_i\leq N
  • 入力されるグラフは木である

入力

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

NN

a1a_1 b1b_1

a2a_2 b2b_2

\vdots

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

出力

答えを出力してください。

3
1 2
2 3
4

条件を満たす PP は以下の 44 通りです。

  • P=(1,3,2)P = (1, 3, 2)
  • P=(2,1,3)P = (2, 1, 3)
  • P=(2,3,1)P = (2, 3, 1)
  • P=(3,1,2)P = (3, 1, 2)
4
1 2
1 3
1 4
12
6
1 2
2 3
3 4
4 5
5 6
122
9
8 5
9 8
1 9
2 5
6 1
7 6
3 8
4 1
19080