桌游 Aqualin 在一个 $n \times n$ 的网格上进行,每个网格单元都填有一个棋子。每个棋子都是一种特定颜色的动物,即每个棋子代表两个属性:动物类型和动物颜色。为简单起见,我们用字母 'A' 到 'Z' 表示动物类型,用数字 1 到 $n$ 表示不同的颜色。
在网格的 $n^2$ 个单元格都被填满后,游戏进行计分。游戏分为两队。
第一队根据相同类型且大小为 2 或以上的最大连通分量得分。具体来说,对于每种动物类型的最大连通分量,第一队获得 $1 + 2 + \dots + (c-1)$ 分,其中 $c$ 是该分量中动物的数量。例如,如果有 3 只海星 ('A')、4 只章鱼 ('B')、1 只鲸鱼 ('C') 和 2 只海星 ('A') 的连通分量,则仅对前两组动物计分。注意,大小为 1 的分量不得分,并且当存在多个相同动物类型的连通分量时,仅最大的连通分量得分。因此,在上述情况下,第一队将因海星获得 $1 + 2 = 3$ 分,因章鱼获得 $1 + 2 + 3 = 6$ 分,总计 9 分。动物的连通分量是指可以通过在网格中上下左右移动,且仅经过相同类型的动物所能直接或间接到达的动物集合。
第二队根据相同颜色且大小为 2 或以上的最大连通分量得分。计分方式与上述相同,基于分量大小。
以下是一个填好的 $5 \times 5$ 网格示例。在每个单元格中,有序对 $(x, y)$ 表示该单元格中的动物类型为 $x$,颜色为 $y$。
(B,3) (A,1) (C,1) (A,2) (A,5) (B,4) (B,1) (B,5) (E,4) (E,3) (C,3) (C,2) (B,2) (D,2) (E,2) (A,3) (C,4) (A,4) (E,5) (D,1) (D,3) (C,5) (D,4) (D,5) (E,1)
首先,考虑按动物类型计分。右上角有两个 'A' 类型的动物,得分为 1。所有五个 'B' 类型的动物都是连通的(看左上角),得分为 10。四个 'C' 类型的动物是连通的,从动物 (C, 3) 开始,得分为 6。两个 'D' 类型的动物是连通的,即 (D, 4) 和 (D, 5),得分为 1。三个 'E' 类型的动物是连通的,即 (E, 4)、(E, 3) 和 (E, 2),得分为 3。第一队的总分为 $1 + 10 + 6 + 1 + 3 = 21$。
顶部有三个颜色为 1 的动物连通,得分为 3。注意,右下角还有 2 个颜色为 1 的动物连通,但该分数不计入,因为我们只计算单一类型(或颜色)动物的最大连通分量。有 4 个颜色为 2 的动物连通(都在第 3 行),得分为 6。有 3 个颜色为 3 的动物连通(都在第 1 列),得分为 3。有 3 个颜色为 4 的动物连通,即 (C, 4)、(A, 4) 和 (D, 4),得分为 3。有 2 个颜色为 5 的动物连通,即 (E, 5) 和 (D, 5),得分为 1。第二队的总分为 $3 + 6 + 3 + 3 + 1 = 16$。
说明:在给定的示例中,有五种动物类型和五种动物颜色。虽然在这个示例中所有 25 种可能的动物类型/颜色组合都恰好出现了一次,但这并不能保证在所有输入网格中都成立。也就是说,某些动物类型/颜色组合可能会出现多次,而某些动物类型/颜色组合可能根本不会出现。
题目描述
给定游戏结束时网格的内容,确定两队的得分。
输入格式
第一行包含一个整数:$n$ ($2 \le n \le 26$),表示游戏网格的行数和列数。接下来的 $n$ 行每行提供网格中一行的内容。每一行由 $n$ 个项表示,每个项提供对应动物的类型 $x$ ('A' $\le x \le$ 'Z') 和颜色 $y$ ($1 \le y \le n$)。假设输入行从第一列开始,并且这些输入行上的不同值之间恰好有一个空格分隔。
输出格式
单独占一行,输出第一队的得分,后跟一个空格,再后跟第二队的得分。
样例
输入 1
5 B 3 A 1 C 1 A 2 A 5 B 4 B 1 B 5 E 4 E 3 C 3 C 2 B 2 D 2 E 2 A 3 C 4 A 4 E 5 D 1 D 3 C 5 D 4 D 5 E 1
输出 1
21 16
输入 2
2 A 1 B 1 A 1 B 1
输出 2
2 6