2230: 拉丁方
内存限制:256 MB
时间限制:1.000 S
评测方式:文本比较
命题人:
提交:2
解决:0
题目描述
n 阶拉丁方指满足每行、每列都恰好包含1~n 这n 个正整数的n 阶方阵。
一个四阶拉丁方的例子:
1 4 2 3
4 2 3 1
2 3 1 4
3 1 4 2
将一个拉丁方的某两行(或某两列)完全对换,称作一次变换。容易知道变换过后的矩阵仍
然是一个拉丁方。
例如,变换上面这个拉丁方的第 1、3 列,得到新的拉丁方如下:
2 4 1 3
3 2 4 1
1 3 2 4
4 1 3 2
再变换它的2、4 行,得到:
2 4 1 3
4 1 3 2
1 3 2 4
3 2 4 1
假如由一个拉丁方经过若干次变换能够得到另一个,则称这两个拉丁方是同构的。
一个四阶拉丁方的例子:
1 4 2 3
4 2 3 1
2 3 1 4
3 1 4 2
将一个拉丁方的某两行(或某两列)完全对换,称作一次变换。容易知道变换过后的矩阵仍
然是一个拉丁方。
例如,变换上面这个拉丁方的第 1、3 列,得到新的拉丁方如下:
2 4 1 3
3 2 4 1
1 3 2 4
4 1 3 2
再变换它的2、4 行,得到:
2 4 1 3
4 1 3 2
1 3 2 4
3 2 4 1
假如由一个拉丁方经过若干次变换能够得到另一个,则称这两个拉丁方是同构的。
输入
输入第一行是一个正整数 n。
接下来的 n 行,每行包括n 个数,表示第一个拉丁方。
接下来是一个空行。
再接下来的 n 行,每行包括n 个数,表示第二个拉丁方。
输入数据都是正确的,不必检验。
接下来的 n 行,每行包括n 个数,表示第一个拉丁方。
接下来是一个空行。
再接下来的 n 行,每行包括n 个数,表示第二个拉丁方。
输入数据都是正确的,不必检验。
输出
输入包括一行:如果两个拉丁方不是同构的,输出-1;如果是同构的,请输出一个整数m,
表示由第一个拉丁方变换到第二个所需的最少变换次数。
表示由第一个拉丁方变换到第二个所需的最少变换次数。
样例输入 复制
4
1 4 2 3
4 2 3 1
2 3 1 4
3 1 4 2
2 4 1 3
4 1 3 2
1 3 2 4
3 2 4 1
样例输出 复制
2
提示
【数据范围】
对于 20%的数据,3≤n≤5;
对于 60%的数据,3≤n≤50;
对于 100%的数据,3≤n≤300。
对于 20%的数据,3≤n≤5;
对于 60%的数据,3≤n≤50;
对于 100%的数据,3≤n≤300。