#lydlx02x0904. 骑士精神

骑士精神

骑士精神

题目描述

在一个 5×55 \times 5 的棋盘上有 1212 个白色的骑士和 1212 个黑色的骑士,且有一个空位。

在任何时候一个骑士都能按照骑士的走法移动到空位上。

给定一个初始的棋盘,怎样才能经过移动变成如下目标棋盘?为了体现出骑士精神,他们必须以最少的步数完成任务。

骑士的走法

骑士可以走到和它横坐标相差为 11,纵坐标相差为 22 或者 横坐标相差为 22,纵坐标相差为 11 的格子。

即国际象棋中骑士的走法(L形移动):

  • 先走2格直线,再走1格直角
  • 或先走1格直线,再走2格直角

目标棋盘

目标棋盘的状态固定为:

11111
01111
00*11
00001
00000

用数字表示:

  • 1 表示黑色骑士
  • 0 表示白色骑士
  • * 表示空位

输入格式

第一行有一个正整数 TT,表示一共有 TT 组数据。

接下来有 TT5×55 \times 5 的矩阵,每个矩阵:

  • 0 表示白色骑士
  • 1 表示黑色骑士
  • * 表示空位

注意: 矩阵按行输入,每组数据是一个 5×55 \times 5 的棋盘。两组数据之间没有空行。

输出格式

每组数据输出占一行。

如果能在 1515 步以内(包括 1515 步)到达目标状态,则输出步数,否则输出 1-1

数据范围

1T101 \le T \le 10

输入样例

2
10110
01*11
10111
01001
00000
01011
110*1
01110
01010
00100

输出样例

7
-1

样例解释

第一组数据

初始棋盘:

1 0 1 1 0
0 1 * 1 1
1 0 1 1 1
0 1 0 0 1
0 0 0 0 0

目标棋盘:

1 1 1 1 1
0 1 1 1 1
0 0 * 1 1
0 0 0 0 1
0 0 0 0 0

可以在 77 步内完成转换,因此输出 7

第二组数据

初始棋盘:

0 1 0 1 1
1 1 0 * 1
0 1 1 1 0
0 1 0 1 0
0 0 1 0 0

无法在 1515 步内转换到目标棋盘,因此输出 -1

约束条件

  1. 棋盘大小为 5×55 \times 5,固定不变
  2. 骑士总数固定:12个白色骑士(用0表示),12个黑色骑士(用1表示),1个空位(用*表示)
  3. 只需要移动骑士到空位,不需要考虑骑士的"吃子"规则
  4. 最大步数限制:15步
  5. 如果超过15步才能到达目标状态,则视为无法完成

时空限制

  • 时间限制:1秒
  • 空间限制:64MB