#CF1966B. 矩形填充
矩形填充
B. 矩形填充
单次测试时间限制: 秒 内存限制: 兆字节
有一个 的方格网格,每个方格为白色或黑色。 在一次操作中,你可以选择两个颜色相同的方格,并将它们之间形成的子矩形内的所有方格染成该颜色。
形式化定义: 若选择位置 和 ,且两者当前颜色均为 ,则将所有满足 且 的方格 的颜色设为 。
下图展示了对一个网格进行两次操作的过程:

请问:执行任意次数操作(包括 次)后,是否能让网格中所有方格变成同一种颜色?
输入格式
第一行输入一个整数 (),表示测试用例数量。
每个测试用例的描述如下:
1. 第一行包含两个整数 和 (),分别表示网格的行数和列数;
2. 接下来 行,每行包含 个字符 W(白色)和 B(黑色),表示网格的初始颜色。
保证:所有测试用例的 之和不超过 。
输出格式
对于每个测试用例,如果能将所有方格染成同一种颜色,输出 YES;否则输出 NO。
输出大小写不敏感(例如 yes、Yes、YES 均算正确)。
样例输入
8
2 1
W
B
6 6
WWWWBW
WBWWWW
BBBWWW
BWWWBB
WWBWBB
BBBWBW
1 1
W
2 2
BB
BB
3 4
BWBW
WBWB
BWBW
4 2
BB
BB
WW
WW
4 4
WWBW
BBWB
WWBB
BBBB
1 5
WBBWB
样例输出
NO
YES
YES
YES
YES
NO
YES
NO
样例说明
- 第一个样例:永远无法通过操作改变任何方格的颜色,因此输出
NO; - 第二个样例:如图所示,两次操作后可将所有方格染成白色,因此输出
YES; - 第三、四个样例:初始时所有方格已经是同色,直接输出
YES; - 第五个样例:两次操作即可将所有方格染成白色。