时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld
题目描述
有一天,小明在和小美下棋,可是小明太厉害了,下了很多局都是小明赢。小美非常生气,准备发动暗黑魔法,召唤象棋中的超级小飞象!刚召唤出来的小飞象非常的crazy!疯狂的踩踏小明的家!小明都懵了,只能眼睁睁的看着自己的家被小飞象狠狠的蹂躏!(小飞象的移动规则和象棋中的规则是一样的)
小明的家是一个 n × m 的地区,小飞象在某个点 (x,y) 被小美使用暗黑魔法阵召唤出来(召唤阵的位置用 0 表示),要求你计算出小飞象到达小明家上任意一个点最少要走几步。
输入描述:
输入只有一行四个整数,分别为 n,m,x,y。
输出描述:
一个 n×m 的矩阵,代表小飞象到达某个点最少要走几步(不能到达则输出 −1)。
示例2
输出
复制
-1 -1 -1 -1 -1
-1 0 -1 -1 -1
-1 -1 -1 -1 -1
-1 -1 -1 1 -1
-1 -1 -1 -1 -1
示例3
输出
复制
-1 -1 -1 -1 -1 -1 -1 -1
-1 1 -1 -1 -1 1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 0 -1 -1 -1 2
-1 -1 -1 -1 -1 -1 -1 -1
-1 1 -1 -1 -1 1 -1 -1
-1 -1 -1 -1 -1 -1 -1 -1
-1 -1 -1 2 -1 -1 -1 2
备注:
对于全部的测试点,保证
1 ≤ x ≤ n ≤ 400,1 ≤ y ≤ m ≤ 400。
样例二解释:小飞象在(2,2)点被召唤出来,由于象只能走田字所以它可以用一步飞到(4,4)点。
样例三解释:小飞象在(4,4)点被召唤出来,可以用一步飞到(2,6)点,在(2,6)点还可以用一步飞到(8,4)点。所以到达(8,4)最少要用两步,所以在此坐标点上填 2 。