#P17183. [ICPC 2017 Hong Kong R] Equivalence of Sudoku

[ICPC 2017 Hong Kong R] Equivalence of Sudoku

题目描述

一个数独解是一个 9×99 \times 9 的矩阵,其中数字 1199 在每一行、每一列以及每个 3×33 \times 3 的小方格中都只出现一次。给定一个数独解 SS,很容易通过执行一种或多种基本变换生成许多与之等价的解:RR 表示旋转 9090180180270270 度;MM 表示沿水平轴或垂直轴做镜像翻转;BB 表示将数字 1199 双射替换为另一组 1199 的数字。可见下例中 S1S_1S2S_2S3S_3 均与 SS 等价。

:::align{center} :::

一个部分数独是指并非所有 8181 个格子都填满的数独。我们说一个部分数独 P1P_1 被另一个 P2P_2 包含(小于 P2P_2),如果存在一个与 P2P_2 等价的 PP,且 PP 可以通过在 P1P_1 基础上填入一个或多个格子而得到。下例中,P1P_1P2P_2 相对于 PP 包含,其中 PP 可由 P2P_2 顺时针旋转 9090 度后,再应用双射映射 {1,2,3,4,5,6,7,8,9}{2,9,3,7,8,6,1,5,4}\{1,2,3,4,5,6,7,8,9\} \to \{2,9,3,7,8,6,1,5,4\} 得到。类似地,我们说 P2P_2 包含 P1P_1,或者说 P2P_2 相对于 PP 大于 P1P_1。注意,并不要求其中一个矩阵被完全填满。

:::align{center} :::

总而言之,对于任意两个数独矩阵 S1S_1S2S_2,它们之间存在四种可能的关系:S1S_1 等价于 S2S_2EE)、S1S_1 小于 S2S_2LL)、S1S_1 大于 S2S_2GG)、S1S_1S2S_2 不可比较(II)。编写一个程序,读入 nn 个数独矩阵的列表,并确定它们两两之间的关系。输出是一个 n×nn \times n 的矩阵,展示关系(E,L,G,IE, L, G, I)。显然对角线上的元素全为 EE(每个矩阵必然与自身等价)。

输入格式

第一行包含矩阵的个数 nn。随后的每组 99 行对应一个(部分)数独矩阵。未填的格子用 00 表示(而不是空白)。假设 2<n4002 < n \le 400,所有输入数据均为合法的(部分)数独矩阵。

输出格式

对每一对输入矩阵,确定它们之间的关系,并将该关系作为一个字母 O{E,L,G,I}O \in \{E, L, G, I\} 输出。每个输入矩阵对应一行输出(即输出 nn 行,每行 nn 个字符)。

3
0 7 4 5 2 3 0 9 8
0 0 0 7 9 8 1 4 0  
5 9 8 0 4 0 2 3 7  
6 3 0 2 7 9 5 8 0
8 4 7 0 5 6 9 2 3  
0 2 5 0 8 4 0 0 1  
4 8 6 9 1 0 3 5 2
2 1 9 8 3 5 0 7 6
0 5 3 4 0 2 8 0 0
0 0 8 0 5 0 4 7 0
6 1 5 2 0 0 9 8 0
0 3 0 9 0 0 5 0 2
0 0 0 6 7 1 0 9 0
4 6 0 8 9 2 0 0 0
9 0 0 0 0 0 0 0 1
1 0 2 0 8 9 7 6 5
8 0 6 5 1 4 2 3 9
0 0 9 7 2 0 1 4 0
1 7 4 5 2 3 0 9 8
3 0 2 7 9 0 1 4 5
5 9 8 0 4 0 2 3 7
6 3 0 0 7 9 5 8 4
8 4 7 0 5 6 9 0 3
9 2 5 3 8 4 7 6 0
4 8 6 9 0 0 3 5 2
2 1 9 0 3 5 4 7 6
0 5 3 4 0 0 8 1 9
EGI
LEL
IGE