A83490.Olya and Energy Drinks
普及/提高-
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Olya 喜欢能量饮料。她非常喜欢,以至于她的房间里到处都是喝完的饮料罐。
形式化地说,她的房间可以用一个 n×m 的网格表示,每个格子要么是空的,要么被饮料罐占据。
Olya 喝了很多能量饮料,现在她每秒可以跑 k 米。每一秒她可以选择四个方向之一(上、下、左或右),然后在该方向上连续跑 1 到 k 米。当然,她只能经过空的格子。
现在 Olya 需要从格子 (x1,y1) 跑到格子 (x2,y2)。如果她以最优方式移动,最少需要多少秒?
保证 (x1,y1) 和 (x2,y2) 这两个格子都是空的,这两个格子可以是同一个。
输入格式
第一行包含三个整数 n、m、k(1≤n,m,k≤1000)——表示房间的大小和 Olya 的速度。
接下来 n 行,每行包含 m 个字符,第 i 行第 j 个字符是 "#",表示格子 (i,j) 被饮料罐占据,否则是 ".",表示格子是空的。
最后一行包含四个整数 x1,y1,x2,y2(1≤x1,x2≤n,1≤y1,y2≤m),表示起点和终点的坐标。
输出格式
输出一个整数,表示 Olya 从 (x1,y1) 到 (x2,y2) 所需的最少时间(秒)。
如果无法从 (x1,y1) 到达 (x2,y2),输出 −1。
输入输出样例
输入#1
3 4 4 .... ###. .... 1 1 3 1
输出#1
3
输入#2
3 4 1 .... ###. .... 1 1 3 1
输出#2
8
输入#3
2 2 1 .# #. 1 1 2 2
输出#3
-1
说明/提示
样例说明
在第一个样例中,Olya 第一秒向右跑 3 米,第二秒向下跑 2 米,第三秒向左跑 3 米。
在第二个样例中,Olya 需要向右跑 3 秒,然后向下跑 2 秒,再向左跑 3 秒。
Olya 不推荐大家喝能量饮料,并且认为这其实并不好。