#P1191. 基站(net)

基站(net)

题目描述

一个 n×nn \times n 的矩形,单元格 (x,y)(x, y) 表示其位于第 xx 行第 yy 列。科学家发明了一种新型网络系统,这种新型网络系统中可以建立多个子网,每个子网需要建立一个 11 号基站 (x1,y1)(x_1, y_1)22 号基站 (x2,y2)(x_2, y_2),该子网可以覆盖以 (x1,y1)(x_1, y_1)(x2,y2)(x_2, y_2) 为顶点的矩形区域(矩形区域的四条边必须平行于行和列)。

11 号基站只能在标记为 11 的单元格中建立,22 号基站只能在矩形的四个顶点单元格(标记为 22)中建立。

不同的子网覆盖区域之间可以相互重叠。

同一个单元格可以建立多个基站。

问最少需要建立多少个子网能将矩形中所有的单元格覆盖。

输入格式

1111 个整数 TT ,表示有 TT 组测试数据,每一组数据输入如下:

1122 个整数 n,mn, m ,表示矩形的行数和列数。

接下来 n n 行描述了矩形中单元格的属性。

ii 行包含 m m 个整数 ai,1,ai,2,,ai,m a_{i, 1}, a_{i, 2}, \ldots, a_{i, m} ,用空格分隔。如果 ai,j a_{i, j} 00 ,表示单元格 (i,j) (i, j) 不能 建立任何基站。如果 ai,j a_{i, j} 11 ,表示单元格 (i,j)(i, j) 可以建立 11 号基站。如果 ai,ja_{i, j}22,表示单 元格 (i,j) (i, j) 可以建立 22 号基站。

输出格式

输出 TT 行,每行 11 个整数,表示如果能将所有单元格覆盖,需要建立的最少子网数量。

样例输入输出

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

说明/提示

【样例 #1 解释】

样例 11 中,最少需要建立 44 个子网,其中一种情况如下:

img

  • 建立子网 11,选择 11 号方格 (2,2)(2, 2)22 号方格 (1,1)(1, 1)
  • 建立子网 22,选择 11 号方格 (3,3)(3, 3)22 号方格 (1,4)(1, 4)
  • 建立子网 33,选择 11 号方格 (3,3)(3, 3)22 号方格 (4,1)(4, 1)
  • 建立子网 44,选择 11 号方格 (3,3)(3, 3)22 号方格 (4,4)(4, 4)

【样例 #2 解释】

样例 22 中,最少需要建立 22 个子网,其中一种情况如下:

img

  • 建立子网 11,选择 11 号方格 (2,1)(2, 1)22 号方格 (1,3)(1, 3)
  • 建立子网 22,选择 11 号方格 (3,1)(3, 1)22 号方格 (4,3)(4, 3)

数据范围

  • 对于 30%30\% 的数据,3n,m503 \le n,m \le 50
  • 对于 100%100\% 的数据,1T101 \le T \le 103n,m1003 \le n, m \le 100