描述
在国际象棋中,马的移动方式与中国象棋中的马类似,都是走“日”字。但国际象棋中的马没有“蹩腿”的限制,因此它可以向周围 8 个方向任意跳动(只要不超出棋盘边界)。具体来说,马每步可以从一个格子跳到与之水平距离为 1、垂直距离为 2,或者水平距离为 2、垂直距离为 1 的格子上。

现在给定一个 $ n $ 行 $ m$ 列的棋盘,以及马的起始位置 $(x, y)$。请你计算马从起始位置出发,到达棋盘上每一个格子所需的最少移动步数。如果某个格子无法到达,则输出 `-1`。
输入
输入仅一行,包含四个整数 $ n, m, x, y $,用空格隔开:
- $ n $:棋盘的行数
- $ m $:棋盘的列数
- $ x $:起始行号$(1 ≤ x ≤ n)$
- $ y $:起始列号$(1 ≤ y ≤ m)$
输出
输出 $ n $ 行,每行包含 $ m $ 个整数,依次表示从起点到该格子(第 $ i $ 行第 $ j $ 列)的最少步数。相邻整数之间用一个空格隔开。如果该格子无法到达,则输出 `-1`。
样例
- 复制
- 复制
提示
### 样例说明
棋盘为 $ 3 \times 3 $,起点位于第 3 行第 1 列(即左下角)。马从起点出发,一步可以跳到 (1,2)、(2,3) 等位置,经过 BFS 计算得到各格子的最短步数如输出所示。注意 (2,2) 无法到达,因此输出 `-1`。
## 数据范围与约定
- $ 1 \le n, m \le 1000 $
- $ 1 \le x \le n , 1 \le y \le m $

关注我们