#JXGQ24013. 运送消毒物资
运送消毒物资
题目描述
强哥是一名社区志愿者,他负责在一个由 n 行 m 列组成的社区网格中运送物资。强哥从左上角的单元 (1,1) 出发,需要将物资运送到右下角的单元 (n,m)。
在每次移动中,强哥可以向相邻的单元移动:
- (x, y) → (x, y + 1) 向右
- (x, y) → (x + 1, y) 向下
- (x, y) → (x, y - 1) 向左
- (x, y) → (x - 1, y) 向上
强哥不能离开社区网格的范围。
社区网格中有一个特殊区域 (sx, sy) 正在进行消毒作业。如果强哥进入距离消毒区域小于或等于 d 的地方,他携带的物资就会受到影响而无法使用。两个单元 (x1,y1) 和 (x2,y2) 之间的距离计算公式为 |x1-x2| + |y1-y2|。
请计算强哥成功将物资运送到目的地 (n,m) 所需的最少步数。如果无法完成任务,输出 -1。
消毒区域既不在起点,也不在终点。起点与消毒区域的距离总是大于 d。
输入格式
一行包含 5 个整数 n, m, sx, sy, d (2 ≤ n, m ≤ 1000; 1 ≤ sx ≤ n; 1 ≤ sy ≤ m; 0 ≤ d ≤ n + m) - 分别表示网格的大小、消毒区域的位置和安全距离。
输出格式
输出一个整数。如果强哥能够成功将物资从 (1,1) 运送到 (n,m),输出所需的最少步数;否则输出 -1。
2 3 1 3 0
3