#P1713. Divide et unita

Divide et unita

本题没有可用的提交语言。

描述

多联骨牌是一种二维图形,由若干个相邻边相连的正方形组成,使得车(国际象棋中的棋子)可以从属于该图形的一个正方形,通过每次移动到其垂直或水平方向且也属于该图形的相邻正方形,从而遍历多联骨牌的所有正方形。

在一张无限大的方格纸上,标记了N2N^2个正方形(2N52\leq N\leq5),它们构成了一个多联骨牌PP。你需要编写一个程序,将这个多联骨牌分割成另外两个多联骨牌AABB,通过旋转和平移(不允许镜像反射),可以用AABB拼成一个N×NN\times N的正方形。只需要找到一种可能的解决方案即可。

输入

输入文件将包含方格纸中包含多联骨牌PP的那部分图形,用字符“.”(点)表示空白区域,用“*”(星号)表示属于该图形的正方形(因为不可能将无限大的方格纸放入文件中,所以输入文件仅描述了其中一部分;所有省略的正方形都被视为空白)。输入文件的行中不会有其他字符。输入文件中每行的长度不会超过100100个字符,且行数不会超过100100行。对于给定的输入文件,总是至少存在一种解决方案。

输出

将包含多联骨牌的方格纸的给定部分图形原样输出到输出文件中,根据每个正方形属于多联骨牌(部分)AA还是BB,将每个星号替换为字符A“A”B“B”。除了上述描述的更改之外,输出文件应包含与输入文件顺序相同的行。

输入数据 1

..
......
....*.
..*.*
..***
..****
..*..*
..****
.......

输出数据 1

..
......
....B.
..B.B
..BBB
..AABA
..A..A
..AAAA
.......

提示

输入可能大到100×100100\times100

来源

1997 年欧洲东北部地区竞赛