atcoder#AGC059C. [AGC059C] Guessing Permutation for as Long as Possible

[AGC059C] Guessing Permutation for as Long as Possible

配点 : 11001100

問題文

先生が (1,2,,N)(1,2,\cdots,N) の順列 P=(P1,P2,,PN)P=(P_1,P_2,\ldots,P_N) を隠し持っています。 これから、あなたはこの順列を特定します。

そのために、あなたは整数のペアの列 $(A_1,B_1),(A_2,B_2),\ldots,(A_{N(N-1)/2},B_{N(N-1)/2})$ を用意しました。これは、(a,b)(a,b) (1a<bN1 \le a < b \le N) という形のすべてのペアを並べ替えたものです。 今から、あなたはこれらのペアを先頭から検査します。ペア (Ai,Bi)(A_i, B_i) に対しては、$P_{A_i} であるかを尋ね、先生が答えを教えます。 ただし、この質問への答えがそれ以前の答えから特定できる場合は、この質問を省略します。

このアルゴリズムで N(N1)2\frac{N(N-1)}{2} 個の質問がすべてされるような順列 PP の個数を 109+710^9+7 で割った余りを求めてください。

制約

  • 2N4002 \le N \leq 400
  • 1Ai<BiN1 \le A_i < B_i \le N
  • (Ai,Bi)(Aj,Bj)(A_i,B_i) \neq (A_j,B_j) (iji \neq j)
  • 入力中のすべての値は整数である。

入力

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

NN

A1A_1 B1B_1

A2A_2 B2B_2

\vdots

AN(N1)/2A_{N(N-1)/2} BN(N1)/2B_{N(N-1)/2}

出力

答えを出力せよ。

2
1 2
2

明らかに、どの順列 PP に対しても、質問を一つする必要があります。

4
1 2
1 3
2 3
2 4
3 4
1 4
4

例として、P=(2,3,1,4)P=(2,3,1,4) を考えます。 この場合、二問目までで P1<P2P_1 < P_2P1>P3P_1 > P_3 を知って P2>P3P_2 > P_3 と特定できるため、三問目を省略します。 従って、P=(2,3,1,4)P=(2,3,1,4) は数えません。

5
1 2
2 3
3 4
4 5
1 5
1 3
2 4
3 5
1 4
2 5
0