#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)=∣i1−i2∣+∣j1−j2∣d(p_1,p_2)=|i_1-i_2|+|j_1-j_2|

任务

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

输入格式

第一行包括两个用空格分开的整数 nn 和 mm,1≤n≤1501 \le n \le 150,1≤m≤1501 \le m \le 150。

以下的 nn 行每行包括一个长度为 mm 的整数为 00 或 11,在第 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