设整个网格中,所有四联通相邻的非墙单元格对里,数值不同的对数为 S,那么题目定义的奇偶性就是:
Smod2现在考虑翻转某一个非墙单元格 (i,j),也就是把 '0' 变成 '1',或把 '1' 变成 '0'。
给定一个大小为 n 行 m 列的网格。使用 (i,j) 表示从往上数第 i 行、从左往右数第 j 列的单元格。每个单元格为单个字符,取值为 '0'、'1' 或者 '#',其中 '#' 表示墙,其他为非墙单元格。
称一对非墙单元格为相邻,当且仅当它们在四相邻邻方(上下左右)上相邻(上下左右)。定义整个网格的奇偶性为:所有相邻的非墙单元格对中,数值不同(一个为 '0',另一个为 '1')的对数对 2 取模的结果。
现在,你可以选择一个非墙单元格,将其数值进行一次反置('0'→'1','1'→'0')。请你计算:有多少个非墙单元格在被反置之后,整个网格的奇偶性保持不变。
每个测试文件均包含多组测试数据。第一行输入一个整数 T (1≤T≤104) 代表数据组数,每组测试数据描述如下:
第一行输入两个整数 n,m (1≤n,m; n×m≤2×106) 表示网格大小;
此后 n 行,第 i 行输入一个长度为 m 的字符串,字符仅取 '0'、'1' 和 '#',描述网格的第 i 行。
除此之外,保证单个测试文件中所有测试数据的 n×m 之和不超过 2×106。
对于每一组测试数据,新起一行,输出一个整数,表示满足条件的非墙单元格数量。
输入
2
2 2
01
10
3 3
0#0
#1#
0#1
输出
4
5