#P13121. [GCJ 2019 #3] Datacenter Duplex

    ID: 12944 远端评测题 20000ms 1024MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>2019并查集Special JudgeGoogle Code Jam

[GCJ 2019 #3] Datacenter Duplex

Description

两家公司,Apricot Rules LLC 和 Banana Rocks Inc.,共用同一个数据中心。数据中心是一个 R\mathbf{R}C\mathbf{C} 列的矩阵,每个格子里有一台服务器塔。每台服务器塔只属于其中一家公司。

最初,他们在分配给不同公司的格子之间的边上建造了墙。这样,属于同一公司的正交相邻格子依然是连通的。同时,如果格子 x\mathbf{x} 与格子 y\mathbf{y} 之间存在直接或间接的连通路径,则认为 x\mathbf{x}y\mathbf{y} 是连通的。根据这个定义,可能会出现同一公司分配的两个格子不连通的情况,这是不可接受的。

两家公司同意在格子的顶点处修建狭窄的走廊,使得两个对角相邻的格子可以直接连通。我们用 (i,j)(\mathbf{i}, \mathbf{j}) 表示第 i\mathbf{i} 行第 j\mathbf{j} 列的格子。每个顶点最多只能建一条狭窄的走廊,这意味着要么连接 (i,j)(\mathbf{i}, \mathbf{j})(i+1,j+1)(\mathbf{i} + 1, \mathbf{j} + 1),要么连接 (i+1,j)(\mathbf{i} + 1, \mathbf{j})(i,j+1)(\mathbf{i}, \mathbf{j} + 1),要么两者都不连,但不能同时连。当然,只有分配给同一公司的格子之间才能建走廊。

给定一个矩阵,每个格子用 A\mathbf{A}B\mathbf{B} 标记,表示分配给哪家公司。请你为每个测试用例设计一种对角连通方案,使得所有 A\mathbf{A} 格子连通,所有 B\mathbf{B} 格子连通。

Input Format

第一行输入测试用例数 T\mathbf{T}。接下来有 T\mathbf{T} 组测试数据。每组测试数据第一行包含两个整数 R\mathbf{R}C\mathbf{C},表示数据中心的行数和列数。接下来有 R\mathbf{R} 行,每行包含 C\mathbf{C} 个字符,表示矩阵 M\mathbf{M}

Output Format

对于每个测试用例,首先输出一行 Case #x: y,其中 xx 是测试用例编号(从 1 开始),yy 若无法通过对角连通方案使所有 A\mathbf{A} 格子连通且所有 B\mathbf{B} 格子连通,则输出 IMPOSSIBLE,否则输出 POSSIBLE。如果输出 POSSIBLE,则接下来输出 R1\mathbf{R} - 1 行,每行 C1\mathbf{C} - 1 个字符,表示一种合法的对角连通方案。第 i\mathbf{i} 行第 j\mathbf{j} 个字符为 \ 表示连接 (i,j)(\mathbf{i}, \mathbf{j})(i+1,j+1)(\mathbf{i} + 1, \mathbf{j} + 1),为 / 表示连接 (i+1,j)(\mathbf{i} + 1, \mathbf{j})(i,j+1)(\mathbf{i}, \mathbf{j} + 1),为 . 表示两对都不连。

3
2 2
AB
BA
2 3
AAB
ABB
3 4
BBAA
BABA
BBAA
Case #1: IMPOSSIBLE
Case #2: POSSIBLE
..
Case #3: POSSIBLE
//\
.//

Hint

样例解释

在样例 1 中,A 格子和 B 格子都需要连通,但由于两条连通路径会交叉在同一个顶点,最多只能连通一对。

在样例 2 中,输入中的格子已经满足连通要求,无需额外连通。注意你可以添加多余但合法的连通方案,因此 // 也是合法答案,但 \. 就不合法。

在样例 3 中,也有多种合法方案,样例给出其中一种。

数据范围

  • 1T1001 \leq \mathbf{T} \leq 100
  • 2C1002 \leq \mathbf{C} \leq 100
  • 对所有 i,j\mathbf{i}, \mathbf{j}Mi,j\mathbf{M}_{\mathbf{i}, \mathbf{j}} 仅为大写字母 A 或 B。
  • 至少有一个格子为 A,至少有一个格子为 B。

测试点 1(10 分,公开)

  • 2R42 \leq \mathbf{R} \leq 4

测试点 2(13 分,隐藏)

  • 2R1002 \leq \mathbf{R} \leq 100

由 ChatGPT 4.1 翻译