luogu#P2335. [SDOI2005] 位图

[SDOI2005] 位图

题目描述

现在我们给出一个 n ×mn\ \times m 的单色位图,且该图中至少含有一个白色的像素。我们用 (i,j)(i,j) 来代表第 ii 行第 jj 列的像素,并且定义两点 p1=(i1,j1)p_1=(i_1,j_1)p2=(i2,j2)p_2=(i_2,j_2) 之间的距离为:

d(p1,p2)=i1i2+j1j2d(p_1,p_2)=|i_1-i_2|+|j_1-j_2|

任务

请写一个程序,读入该位图,并对于每个像素,计算出离该像素最近的白色像素与它的距离。把结果输出。

输入格式

第一行包括两个用空格分开的整数 nnmm1n1501 \le n \le 1501m1501 \le m \le 150

以下的 nn 行每行包括一个长度为 mm 的整数为 0011,在第 i+1i+1 行的第 jj 个字符如果为 11,那么表示像素 (i,j)(i,j) 为白的,否则为黑的。

输出格式

输出一个 n ×mn\ \times m 的数表,其中的第 ii 行的第 jj 个数字为 f(i,j)f(i,j) 表示像素 (i,j)(i,j) 到最近的白色像素的距离。

3 4
0 0 0 1
0 0 1 1
0 1 1 0
3 2 1 0
2 1 0 0
1 0 0 1