#P9628. [ICPC 2020 Nanjing R] Go
[ICPC 2020 Nanjing R] Go
Description
围棋是一种对抗性游戏,目的是用自己的石头比对手的石头包围更大的棋盘总面积。游戏的核心理念是自由,即一个开放点,或者更确切地说,是棋盘上垂直线和水平线的交叉点,上面没有石头,与群体接壤。
一个白色或黑色的石头,如果它至少有一个直接正交相邻的自由(上、下、左或右),或者必须与一块有生命的相同颜色的石头在同一个连接组中,那么它是有生命的,被称为活着。我们说,如果两块颜色相同的石头正交相邻,它们就直接相连。如果存在一系列石头 ,对于所有 , 和 颜色相同且正交相邻,则相同颜色的两块石头 和 属于同一连通组。
例如,在下图的左侧,两块白色的石头都没有活着,因为它们被周围的黑色石头捕获了;而在右边的部分,最右边的白色石头也没有生命,即使最左边的黑色石头也没有。

给定一个有 条垂直线和 条水平线的棋盘,其中可能有一些石头躺在上面,请计算黑色石头捕获的白色石头的数量(也就是说,计算没有生命的白色石头数量)。上述例子的结果分别为 和 。
然而,我们亲爱的朋友 Kotori 认为这个问题让我们聪明的参赛者解决太简单了,所以她想让你独立翻转每块石头的颜色(也就是说,把黑色的石头变成白色的石头,反之亦然),并在每次翻转后找到相应的答案。
独立翻转的意思是,在翻转石头的颜色之前,其他石头应该变回原来的颜色。还要注意,这个问题中的数据不是来自真实世界,这意味着棋盘的大小不一定是 ,黑白石头的数量可以是任意整数。
反之亦然:在这里,它可以用 把白色的石头变成黑色的石头 来代替。这是现代英语中非常常见的短语,尤其是在学术写作中,所以请记住。
Input Format
有多个测试样例。输入的第一行包含一个整数 表示测试样例的数量。对于每个测试样例:
第一行包含一个整数 (),表示棋盘的边长。
对于接下来 行,第 行包含一个字符串 。其中 表示第 行第 列有一个黑石头, 表示第 行第 列有一个白石头, 表示第 行第 列是空的。
保证所有测试样例的 之和不超过 。
Output Format
对于每个测试用例输出一个整数 作为如下编码的答案:
- 对所有石头进行排序,以其行号(从上到下)为第一关键字,以其列号(从左到右)为第二关键字;
- ,其中 是石头的数量, 是翻转第 次颜色后没有生命的白色石头的数量。
$\underline{\textbf{注意}\text{:\textsf{模数}和\textsf{基数}是}\textbf{不同}{的}}$ 。(我们恳求你注意这句话。如果这不是 pdf 文件,我宁愿它像疯了一样闪烁。)
3
2
.o
..
3
.x.
xoo
ox.
2
oo
oo
0
870527216
485539347
Hint
对于第二个测试样例,按照 的顺序翻转石头后,死亡的白色石头数量分别为 。
对于第三个测试样例,棋盘上的所有石头,无论是黑色还是白色,都不是活着的。
京公网安备 11011102002149号