青铜莲花池[1]
时间限制:1秒 内存限制:256M
【题目描述】
FJ 建造了一个美丽的池塘,用于让他的牛们审美和锻炼。这个长方形的池子被分割成了 \(M\) 行和 \(N\) 列)正方形格子的。某些格子上有莲花,还有一些格子是岩石,其余的只是水。
贝茜正在练习芭蕾舞,她从一个莲花跳跃到另一个莲花,当前位于一个莲花。她希望在莲花上一个一个的跳,目标是另一个给定莲花。她既不能跳入水,也不到一个岩石上。贝茜的每次的跳跃像国际象棋中的骑士一样:横向移动 \(M_1\),然后纵向移动量\(M_2(M_1≠M_2)\),或纵向移动量 \(M_1\),然后横向移动 \(M_2\)。贝茜有时可能会有多达 8 个方向选择的跳跃。
给定池塘的布局和贝茜的跳跃格式,请确定贝茜从从她的出发位置,到最终目的地,最小的跳跃次数,贝茜在给出测试数据一定可以跳到目的地。
【输入格式】
第 \(1\) 行包含四个用空格隔开的整数: \(M, N, M_1, M_2\)。
第 \(2..M+1\) 行: 第 \(i+1\) 行有 \(N\) 个整数,表示该位置的状态: 0 为水、1 为莲花、2 为岩石、3 为贝茜开始的位置、 4 为贝茜要去的目标位置。
【输出格式】
一个整数,从起始点到要去的位置,贝茜最小的跳跃次数。
【输入输出样例】
Input
4 5 1 2
1 0 1 0 1
3 0 2 0 4
0 1 2 0 0
0 0 0 1 0
Output
2
【数据限制】
对于 \(100\%\) 的数据,\(1≤M,N≤30\)。
【来源】
Mr.he