luogu#P16439. [XJTUPC 2026] 鲜艳 / 方格
[XJTUPC 2026] 鲜艳 / 方格
题目描述
Y2hlOTYw 是一名国际象棋爱好者。然而,他没有自己的棋盘。
一天,他得到了一张 行 列的黑白双色网格纸。这当然不会是一个标准的国际象棋棋盘,不过 Y2hlOTYw 可管不了这么多。他认为,如果所有同色格子通过上下左右相邻形成的每个连通块,其形状都必须是矩形,这张网格纸就能当成棋盘用。
现在 Y2hlOTYw 想让你帮忙判断一下,这张网格纸能不能当成棋盘用。
形式化地,设网格纸为 ,其中 和 为正整数。每个格子 被赋予一种颜色 $\text{color}(i,j) \in \{\text{black},\text{white}\}$。
两个格子 与 相邻当且仅当 。
对于固定的颜色 ,考虑子集 。在 上定义等价关系:两个格子等价当且仅当存在格子序列 使得每个格子都属于 ,且对于任意的 ()都有格子 与格子 相邻。每个等价类称为一个连通块。一个连通块是极大的,即不能通过添加任何相邻的同色格子而扩大。
一个格子集合 的形状被称为矩形,如果存在整数 和 使得:
$$R = \{(i,j) \mid r_1 \le i \le r_2,\ c_1 \le j \le c_2\}$$现在需要判断:每一个连通块的形状,是否都是矩形。
输入格式
本题包含多组测试用例。输入的第一行,包含一个正整数 (),表示测试用例的数量。
接下来是 组测试用例的描述。
每个测试用例的第一行,包含两个整数 和 (),用一个空格分隔,表示网格纸有 行 列。
接下来 行,第 行包含一个长度恰为 的字符串 ,表示给定的网格纸。保证字符串 仅包含字符 和 。其中,对于任意的整数 和 ():
- 若第 行第 个字符为 ,表示网格纸第 行第 列的格子 的颜色为黑色();
- 若第 行第 个字符为 ,表示网格纸第 行第 列的格子 的颜色为白色()。
保证所有测试用例中 的总和不超过 。
输出格式
对于每个测试用例,输出一行,包含一个字符串:
- 若这张网格纸能当成棋盘用,即每一个连通块的形状都是矩形,则输出 ;
- 否则,输出 。
答案对大小写不敏感。例如 ,, 和 都会被视为 。
4
2 3
110
110
4 3
110
111
111
111
5 5
00000
01110
01010
01110
00000
8 8
01010101
10101010
01010101
10101010
01010101
10101010
01010101
10101010
Yes
No
No
Yes