SZ#T765175. 【GESP强化 六级】莲叶跳跃

提交1 通过1
通过率100%
时间限制3000ms
内存限制256MiB
    ID: 10454 传统题 3000ms 256MiB 尝试: 1 已通过: 1 难度: 普及 上传者: 标签>广度优先搜索C++GESPGESP6级GESP考点强化编程题洛谷团队72153私有题1星

题目描述

小泽在一个被划分为MMNN列的长方形池塘上练习跳跃,池塘的每个格子为以下状态之一:00代表水,11代表莲花,22代表岩石,33代表小泽所在的起点,44代表小泽想去的终点。

小泽只能在莲花之间跳跃,既不能跳到水里,也不能跳到岩石上。

小泽的跳跃方式像象棋中的马步:每次总是先横向移动M1M1格,再纵向移动M2M2格,或先纵向移动M1M1格,再横向移动M2M2格(1M1301 \le M1 \le 301M2301 \le M2 \le 30M1M2M1 \neq M2),最多有八个移动方向可供选择。

给定池塘的布局和小泽的跳跃长度,请计算小泽从起点出发,到达目的地的最少步数,题目保证目的地一定可达。

输入格式

第一行:四个用空格分开的整数MMNNM1M1M2M2

第二行到M+1M+1行:第i+1i+1行有NN个用空格分开的整数,描述了池塘第ii行的状态:00为水,11为莲花,22为岩石,33为起点,44为终点。

输出格式

第一行:从起点到终点的最少步数。

4 5 1 2
1 0 1 0 1
3 0 2 0 4
0 1 2 0 0
0 0 0 1 0
2
8 8 1 2
3 1 1 1 1 1 0 0
1 1 1 1 1 1 1 0
0 1 0 1 1 0 2 2
2 1 4 1 1 0 1 0
2 1 1 0 1 1 1 0
1 1 2 2 1 1 0 1
1 1 1 2 1 0 1 1
1 2 0 1 1 0 1 0
3
9 9 1 2
3 0 2 1 0 1 0 0 2
0 1 1 1 1 2 0 1 1
2 1 1 2 4 1 1 1 1
1 1 1 0 1 1 1 1 1
2 1 2 1 1 2 1 1 1
1 1 1 0 1 0 0 2 1
1 0 1 1 0 1 0 0 0
1 0 2 0 1 0 1 0 1
1 1 1 1 0 0 0 1 2
2