游戏购买!
题号:NC243336
时间限制:C/C++/Rust/Pascal 5秒,其他语言10秒
空间限制:C/C++/Rust/Pascal 512 M,其他语言1024 M
64bit IO Format: %lld

题目描述

小竹成功从家里逃了出来,他决定去小胖家避一避。但是小胖要求小竹带一个刺激度大于 x 的游戏才能去他家。

为了防止被妈妈或她的朋友发现,小竹不会在道路上行走,而是在建筑物与建筑物之间穿行。

街道表现为一个 的网格,网格上只有两种建筑: 商店和住宅。商店可以通过而住宅无法通过。

小竹每次从当前所在网格可以行走到上下左右的网格中,但不能移动到网格的边界之外和别人的家中。正式的说,如果他在坐标为 (i,j) 的网格里,他可以选择 四个方向行走。

在位置 (i,j) 上的商店有一个刺激度为 的游戏,小竹可以购买他所经过的商店中的游戏并带走。若 -1 则代表这个位置是个住宅,无法通过。

注意:小胖家以及小竹家均可以被通过。

假设相邻的建筑物的距离均为 1,小竹想知道带一个刺激度高于 x 的游戏去小胖家需要的最短距离是多少?如果这是不可能实现的,请输出 -1

输入描述:

第一行三个整数 

第二行四个整数 表示起点与终点的坐标,均为0

接下来 n 行,每行 m 个整数,第 i 行第 j 个整数 ,其中所有商店的

输出描述:

一行一个整数,表示最短距离,若无法携带一个刺激度大于 x 的游戏到小胖家,输出-1。
示例1

输入

复制
3 3 1
1 1 3 3
0 1 2
1 1 -1
1 1 0

输出

复制
6

说明

小竹从家 (1,1) 出发,需要先前往唯一可以购买刺激度大于 1 游戏的商店 (1,3) 买到刺激度为 2 的游戏再去小胖家。路线为  (1,1)->(1,2)->(1,3)->(1,2)->(2,2)->(3,2)->(3,3)总距离为6。