P1032

[2010Beijing wc]矩阵距离

[2010Beijing wc]矩阵距离

给定一个 nn 行 mm 列的矩阵,其中每个元素的值均为 00 或 11。

定义矩阵中两个位置 (i,j)(i,j) 与 (x,y)(x,y) 之间的距离为:

D((i,j),(x,y))=∣i−x∣+∣j−y∣。D((i,j),(x,y))=|i-x|+|j-y|。

对于矩阵中的每个位置 (i,j)(i,j),求其到所有值为 11 的位置的最小距离,即:

min⁡1≤x≤n1≤y≤max,y=1D((i,j),(x,y))。\min_{\substack{1\le x\le n\\1\le y\le m\\a_{x,y}=1}}D((i,j),(x,y))。

所有下标均从 11 开始。

输入格式

第一行包含两个整数 nn 和 mm,分别表示矩阵的行数和列数。

接下来 nn 行,每行包含 mm 个字符。其中,第 ii 行的第 jj 个字符表示 ai,ja_{i,j},每个字符均为 00 或 11。

输出格式

输出 nn 行,每行包含 mm 个以空格分隔的整数。其中,第 ii 行的第 jj 个整数表示位置 (i,j)(i,j) 到任意值为 11 的位置的最小距离。

样例输入

3 4
0001
0011
0110

样例输出

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

数据范围

  • 对于 100%100\% 的数据,0<n,m≤10000<n,m\le 1000;
  • 保证矩阵中至少有一个元素的值为 11。

来源与许可

本题为 Beijing WC 2010 试题「矩阵距离」,题面与测试数据整理自 BZOJ。

样例 1

输入

3 4
0001
0011
0110

输出

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