QOJ.ac

QOJ

시간 제한: 3.0 s 메모리 제한: 1024 MB 총점: 100 해킹 가능 ✓

#15903. 网格编织

통계

巫毒女士曾经编织过一幅神奇的挂毯。起初,她拿了一块空白的画布,可以表示为一个 $r$ 行 $c$ 列的 $r \times c$ 网格,因此有 $(r + 1) \times (c + 1)$ 个网格点。然后,她进行了若干次以下操作:她在画布上沿着网格线编织了一个环(cycle),在该环内每个网格点最多经过一次。此外,任意两个环不共享任何网格点。

最终,不位于画布边界上的 $(r-1)\cdot(c-1)$ 个内部网格点中,每一个都恰好被一个环经过。以下是 $r = 2, c = 3$ 时环排列的一些示例,其中内部网格点已被高亮显示:

然后,她把画布在地上放了一夜。在夜里,$r \cdot c$ 只绿色的青蛙跳上了画布,每个网格单元格里都坐着一只。但这只是巫毒女士麻烦的开始!因为随后,老女巫来到了画布前,将画布上编织的每一条线段一条接一条地拆掉了。

每当她拆掉两个相邻网格点之间的一条编织线段时,与该线段相邻的单元格中的青蛙就会受到惊吓(会有一只或两只青蛙受到惊吓,取决于该线段是否在边界上)。当一只青蛙受到惊吓时,它会立即改变颜色:如果青蛙是绿色的,它会变成棕色;如果它是棕色的,它会重新变成绿色。

如果环的排列如上图所示,那么颜色将如下所示(灰色单元格代表绿色青蛙,白色单元格代表棕色青蛙):

当巫毒女士回到她的画布前时,她只看到画布上有两种颜色的青蛙,但没有编织的环。根据给定的青蛙颜色排列,判断它是否可能由上述过程产生,如果可以,帮助巫毒女士恢复一种可能的环排列。

输入格式

每个测试点包含多个测试用例。第一行包含测试用例的数量 $t$ ($1 \le t \le 10^4$)。接下来是测试用例的描述。

每个测试用例的第一行包含两个整数 $r$ 和 $c$,表示网格的尺寸 ($2 \le r, c \le 10^3$)。

接下来的 $r$ 行中,每行包含一个由 $c$ 个字符组成的字符串,字符为 GB,分别表示绿色和棕色的青蛙。

保证所有测试用例中 $r \cdot c$ 的总和不超过 $2 \cdot 10^6$。

输出格式

对于每个测试用例,如果给定的青蛙颜色可以由上述过程产生,则在第一行输出 YES,否则输出 NO

如果答案为 YES,则再输出 $2r+ 1$ 行二进制字符串(包含字符 01)。其中前 $r+ 1$ 行每行长度为 $c$,表示水平网格线段;接下来的 $r$ 行每行长度为 $c+ 1$,表示垂直网格线段,具体说明如下:

在前 $r + 1$ 行中,第 $i$ 行的第 $j$ 个字符如果为 1,表示从左数第 $j$ 个、从上数第 $i$ 个水平网格线段上应该有一条编织线,否则为 0

在接下来的 $r$ 行中,第 $i$ 行的第 $j$ 个字符如果为 1,表示从左数第 $j$ 个、从上数第 $i$ 个垂直网格线段上应该有一条编织线,否则为 0

样例

输入样例 1

3
2 3
BBG
GBB
3 3
GGG
GGG
GGG
3 3
GGG
BBB
GGG

输出样例 1

YES
001
101
100
0011
1100
YES
111
010
010
111
1001
1111
1001
NO

说明

第一个测试用例是说明中环排列的第一个示例。

在第二个样例测试用例中,样例中显示的输出如下图中的第一幅图所示。第二幅图中的环排列也是正确的,而第三幅图中的排列是不正确的,因为一些网格点被多个环共享。让网格保持空白也是不正确的,因为这样就没有环经过内部网格点了。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.