CF472E Design Tutorial: Learn from a Game

题目描述

给定 $n \times m$ 的初始矩阵和目标矩阵,你可以进行下面**一次**操作: 选择一个格子,然后与相邻的格子(八联通)交换,可以看作选定的权值移动到这个格子,接着可以继续移动选定的权值到其他相邻格子。 问是否有解,使得起始矩阵变为目标矩阵。

输入格式

第一行两个整数 $n,m(1 \le n,m \le 30)$。 接下来 $n \times m$ 为起始矩阵。 接下来 $n \times m$ 为目标矩阵。 矩阵值域在 $1 \le s_{i,j} \le 900$。

输出格式

无解输出 $-1$。 否则第一行输出一个整数 $k\ (1 \le k \le 10^6)$,代表移动次数。 接下来 $1$ 行两个整数 $x,y$,代表选定的起始点。 接下来 $k-1$ 行每行两个整数 $x,y$,代表移动到的位置。