CF1721B Deadly Laser
题目描述
有一个长 $n$ 宽 $m$ 的网格,一个机器人被放在此网格的左上角 $(1,1)$。
每一步,机器人可以移动到与其所在格子相邻的四个格子:
- $(x,y) \rightarrow (x,y+1)$;
- $(x,y) \rightarrow (x+1,y)$;
- $(x,y) \rightarrow (x,y-1)$;
- $(x,y) \rightarrow (x-1,y)$。
机器人不能移出网格。
在 $(s_x,s_y)$ 处,放置着致命的激光。所有与激光所在格子的距离小于等于 $d$ 的格子都不可通行。($(x_1,y_1)$ 到 $(x_2,y_2)$的距离为: $|x_1-x_2|+|y_1-y_2|$)
输出机器人从 $(1,1)$ 移至 $(n,m)$ 的最小步数。如果机器人不能到达 $(n,m)$,输出 `-1`。
输入格式
第一行为一个整数$t$($1\leq t\leq 10^4$),代表测试数据的数量。
对于每一组测试数据,只有一行输入,包含 $5$ 个整数:$n$, $m$, $s_x$, $s_y$, $d$ ($2\leq n,m\leq 1000$; $1\leq s_x \leq n$; $1\leq s_y \leq m$; $0\leq d\leq n+m$),其意义与上方相同。
输入数据保证激光既不在起点的格子,也不在终点的格子;保证起点的格子可以通行。($(s_x,s_y)\neq(1,1)$; $(s_x,s_y)\neq(n,m)$; $|s_x-1|+|s_y-1|>d$)
输出格式
对于每组测试数据,输出一个整数。如果机器人可以达到终点,输出到达终点所需的最小步数。否则,输出 `-1`