CF1667F Yin Yang

题目描述

给定一个有 $n$ 行 $m$ 列的矩形网格,$n$ 和 $m$ 都能被 $4$ 整除。部分格子已经被染成黑色或白色。保证没有两个已染色的格子共享边或角。 请你给剩下的格子染色,使得所有黑色格子和所有白色格子分别都能通过正交方向(上下左右)连通,或者判断无解。 具体来说,把所有黑色格子看作图中的节点,如果两个格子共享一条边,则它们之间有一条边。如果这个图是连通的,则称黑色格子是正交连通的。白色格子同理。

输入格式

输入包含多组测试用例。第一行包含一个整数 $t$($1 \le t \le 4000$),表示测试用例的数量。 每个测试用例的第一行包含两个整数 $n$ 和 $m$($8 \le n, m \le 500$,$n$ 和 $m$ 都能被 $4$ 整除),表示网格的行数和列数。 接下来的 $n$ 行,每行包含 $m$ 个字符,每个字符为 'B'、'W' 或 '.',分别表示黑色、白色或未染色的格子。保证没有两个已染色的格子共享边或角。 保证所有测试用例中 $n \cdot m$ 的总和不超过 $250\,000$。

输出格式

对于每个测试用例,如果无解,输出一行 "NO"。否则输出 "YES",并输出一个与输入格式相同的网格。若有多种方案,输出任意一种均可。

说明/提示

第一个测试用例的解如下: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF1667F/3dc9d1049e5e9d683890dfa8ead1eafd76cdf4e9.png) 第二个测试用例:可以发现黑色和白色部分无法同时连通,因此答案为 "NO"。 由 ChatGPT 4.1 翻译