[USACO 2007 Feb B]Bronze Lilypad Pond
题号:NC25160
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 32 M,其他语言64 M
64bit IO Format: %lld

题目描述

Farmer John为了满足奶牛对美的享受而安装了人工湖。矩形的人工湖分成 行 的方形小格子。有些格子是荷叶,有些岩石,剩下的格子有的只是美丽的蓝色湖水。
Bessie通过从一片荷叶跳到另一片荷叶上来练习芭蕾。它现在正站在一片荷叶上(看输入数据了解具体位置)。它希望通过在荷叶上跳跃来到达另一片荷叶。它既不能跳到水里也不能跳到岩石上。
Bessie的跳跃有点类似象棋中马那样的移动,在一个方向上移动格,然后再在斜方向上移动格(或者是在一个方向上移动 格,然后在斜方向上移动 格)。Bessie再一个荷叶最多可能有多达8种的跳跃选择。
给出池塘的构造以及Bessie跳跃的形式,找出Bessie从起点荷叶跳到终点荷叶所需的最小的跳跃次数。数据保证有解。

输入描述:

第1行: 四个空格分开的整数: M, N, M1, 和 M2
第2行至 M+1行: 第i+1行用N个空格分开的整数描述池塘第i行,0表示水,1表示 荷叶,2表示岩石,3表示Bessie现在站的那块荷叶,4表示跳跃的终点。

输出描述:

输出 一个整数,是Bessie从起点荷叶跳到终点荷叶所需的最小的跳跃数。
示例1

输入

复制
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

说明

Bessie在第二行的左边开始;她的目的地在第二行的右边。池塘中有几块荷叶和岩石。
Bessie聪明的跳到了(1,3)的荷叶上,再跳到目的地。