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

[AGC059C] Guessing Permutation for as Long as Possible

题目描述

老师手中藏有一个 (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\leq a < b \leq N)的整数对重新排列后的序列。接下来,你将从头开始依次检查这些对。对于每个对 (Ai,Bi)(A_i,B_i),你会询问 PAi<PBiP_{A_i} < P_{B_i} 是否成立,老师会告诉你答案。但如果这个问题的答案可以从之前所有问题的答案中唯一确定,则跳过该问题。

请你计算,有多少个排列 PP,会使得按照上述算法,N(N1)2\frac{N(N-1)}{2} 个问题全部都会被实际询问。将答案对 109+710^9+7 取模后输出。

输入格式

输入从标准输入读入,格式如下:

NN A1A_1 B1B_1 A2A_2 B2B_2 \vdots AN(N1)/2A_{N(N-1)/2} BN(N1)/2B_{N(N-1)/2}

输出格式

输出答案。

样例 1

输入

2
1 2

输出

2

样例 2

输入

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

输出

4

样例 3

输入

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

输出

0

说明/提示

限制

  • 2N4002 \leq N \leq 400
  • 1Ai<BiN1 \leq A_i < B_i \leq N
  • (Ai,Bi)(Aj,Bj)(A_i,B_i) \neq (A_j,B_j)iji \neq j
  • 输入中的所有值均为整数。

样例解释 1

显然,对于任意排列 PP,都需要询问一次问题。

样例解释 2

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) 不计入答案。

由 ChatGPT 4.1 翻译