1434: 冰壶
[Creator : ]
Description
MM -21星球上的冰壶比赛规则如下:比赛的目标是将一个冰壶从起始位置移动到终点 。比赛在画有方格的冰面上进行,每移动 一个算一步,移动 步数少者获胜。
上图是一个比赛场地的样例,样例,场地中一些地方有障碍物,起始位置标记 为 S,目标位置标记 为 G。冰壶每次移动, 必须 撞到障碍物才能停止,待冰壶停止之后运动员才能进行下一次移动 。
移动规则如下:
⚫ 初始状态冰壶在起始位置
⚫ 冰壶只能向上或者向下移动,不能斜向移动
⚫ 冰壶完全停下来,你才能再次移动它
⚫ 每次移动, 冰壶必须满足以下条件之一才能停下 来:
冰壶撞到障碍物
◆冰壶停在障碍物旁边
◆ 障碍物消失
冰壶 出界
◆ 比赛结束, 失败
冰壶到达目标状态
◆ 比赛结束,胜利
在比赛规则下,请判断是否可以获胜,如果可以,输出最少操作次数。
例如,在下图所示状态下,需要通过4次移动到达终点, 移动后比赛场地状态 如图 b。

上图是一个比赛场地的样例,样例,场地中一些地方有障碍物,起始位置标记 为 S,目标位置标记 为 G。冰壶每次移动, 必须 撞到障碍物才能停止,待冰壶停止之后运动员才能进行下一次移动 。
移动规则如下:
⚫ 初始状态冰壶在起始位置
⚫ 冰壶只能向上或者向下移动,不能斜向移动
⚫ 冰壶完全停下来,你才能再次移动它
⚫ 每次移动, 冰壶必须满足以下条件之一才能停下 来:
冰壶撞到障碍物
◆冰壶停在障碍物旁边
◆ 障碍物消失
冰壶 出界
◆ 比赛结束, 失败
冰壶到达目标状态
◆ 比赛结束,胜利
在比赛规则下,请判断是否可以获胜,如果可以,输出最少操作次数。
例如,在下图所示状态下,需要通过4次移动到达终点, 移动后比赛场地状态 如图 b。

Input
输入包含多组测试样例,样例组数小于100 ,当样例输入两个0时输入结束
每组样例第一行输入场地的宽 w和高 h 2 <= w <=20,1 <= h<= 20。
以下h行每行包含 w个数字,数字,每个 数字含义为:
0 空地
1 障碍
2 起始位置
3 终止位置
每组样例第一行输入场地的宽 w和高 h 2 <= w <=20,1 <= h<= 20。
以下h行每行包含 w个数字,数字,每个 数字含义为:
0 空地
1 障碍
2 起始位置
3 终止位置
Output
对于 每组 数据,输出 从起始点到终点 的最少移动次数,如果无法到达,输出 -1。
Sample Input Copy
2 1
3 2
6 6
1 0 0 2 1 0
1 1 0 0 0 0
0 0 0 0 0 3
0 0 0 0 0 0
1 0 0 0 0 1
0 1 1 1 1 1
6 1
1 1 2 1 1 3
6 1
1 0 2 1 1 3
12 1
2 0 1 1 1 1 1 1 1 1 1 3
13 1
2 0 1 1 1 1 1 1 1 1 1 1 3
0 0
Sample Output Copy
1
4
-1
4
10
-1
HINT
冰壶,不能刚扔出去就马上撞到墙,移动次数小于等于10,超过10算失败