AT_xmascon23_g Group Structure
题目描述
设 $N$ 为正整数。所有 $(1, 2, \ldots, N)$ 的全排列记作 $\mathfrak{S}_N$。对于 $f \in \mathfrak{S}_N$,可以将其视为序列 $(f(1), f(2), \ldots, f(N))$。对于 $f, g \in \mathfrak{S}_N$,定义 $f \circ g \in \mathfrak{S}_N$,对于 $k = 1, 2, \ldots, N$,有 $(f \circ g)(k) = f(g(k))$。将 $\mathfrak{S}_N$ 的所有元素按字典序排列为 $P(1) < P(2) < \cdots < P(N!)$。
给定 $(N!)^2$ 个整数 $A(i, j)$ ($1 \le i, j \le N!$)。求出所有满足下列条件的 $(1, 2, \ldots, N!)$ 的一个排列 $q = (q(1), q(2), \ldots, q(N!))$,使得对于所有 $1 \le i, j \le N!$,有 $P(q(i)) \circ P(q(j)) = P(q(A(i, j)))$,并将所有满足条件的 $q$ **按字典序输出**。
此外,**已由题目保证存在满足条件的 $q$**。
输入格式
输入按以下格式从标准输入中给出。
> $N$ $A(1, 1)$ $A(1, 2)$ $\cdots$ $A(1, N!)$ $A(2, 1)$ $A(2, 2)$ $\cdots$ $A(2, N!)$ $\vdots$ $A(N!, 1)$ $A(N!, 2)$ $\cdots$ $A(N!, N!)$
输出格式
第 $1$ 行输出满足条件的 $q$ 的个数。
接下来每一行按**字典序**依次输出满足条件的 $q$,每行依次输出 $q(1), q(2), \ldots, q(N!)$,用空格分隔。
说明/提示
### 部分得分
- 对于满足 $N = 1, 2, 3, 4, 5, 6$ 的数据集,分别可以获得 $1, 2, 4, 8, 16, 69$ 分。
### 样例解释 1
$\mathfrak{S}_3$ 的元素如下 $6$ 个:
- $P(1) = (1, 2, 3)$
- $P(2) = (1, 3, 2)$
- $P(3) = (2, 1, 3)$
- $P(4) = (2, 3, 1)$
- $P(5) = (3, 1, 2)$
- $P(6) = (3, 2, 1)$
例如当 $q = (3, 2, 6, 4, 5, 1)$ 时,
- $P(q(1)) = (2, 1, 3)$
- $P(q(2)) = (1, 3, 2)$
- $P(q(3)) = (3, 2, 1)$
- $P(q(4)) = (2, 3, 1)$
- $P(q(5)) = (3, 1, 2)$
- $P(q(6)) = (1, 2, 3)$
此时可以确认 $P(q(2)) \circ P(q(3)) = P(q(4)) = P(q(A(2, 3)))$ 等式成立。
### 数据范围
- $1 \le N \le 6$。
- $1 \le A(i, j) \le N!$($1 \le i, j \le N!$)。
- 已保证存在满足条件的 $q$。
由 ChatGPT 5 翻译