#CF1986B. 矩阵稳定化
矩阵稳定化
B. 矩阵稳定化
时间限制:2 秒
内存限制:256 兆字节
给定一个 的矩阵,行从上到下编号为 到 ,列从左到右编号为 到 。第 行第 列的元素记为 。
考虑以下稳定化矩阵 的算法:
- 找到一个单元格 ,使得它的值严格大于它所有邻居单元格的值。如果没有这样的单元格,则算法终止。如果有多个这样的单元格,则选择 最小的那个;如果仍有多个,则选择 最小的那个。
- 设置 。
- 转到步骤 1。
在本题中,单元格 和 被认为是邻居当且仅当它们共享一条公共边,即 。
你的任务是输出算法执行结束后的矩阵 。可以证明该算法不会无限运行。
输入
每个测试包含多组输入数据。第一行包含一个整数 ()——输入数据的组数。接下来是各组数据的描述。
每组输入数据的第一行包含两个整数 和 (,)——矩阵 的行数和列数。
接下来的 行描述矩阵的对应行。第 行包含 个整数 ()。
保证所有输入数据的 之和不超过 。
输出
对于每组输入数据,输出 行,每行 个数,表示算法执行结束后的矩阵 。
示例
输入
6
1 2
3 1
2 1
1
1
2 2
1 2
3 4
2 3
7 4 5
1 8 10
5 4
92 74 31 74
74 92 17 7
31 17 92 3
74 7 3 92
7 31 1 1
3 3
1000000000 1 1000000000
1 1000000000 1
1000000000 1 1000000000
输出
1 1
1
1
1 2
3 3
4 4 5
1 8 8
74 74 31 31
74 74 17 7
31 17 17 3
31 7 3 3
7 7 1 1
1 1 1
1 1 1
1 1 1
注释
在第一组输入数据中,算法会连续两次选择单元格 ,然后终止。

在第二组输入数据中,没有单元格的值严格大于所有邻居的值。
在第三组输入数据中,算法会选择单元格 ,然后终止。

在第四组输入数据中,算法会选择单元格 三次,然后选择单元格 两次。