题目描述
有一个 $n \times n$ 的方阵,每个位置上都有一盏灯,这些灯有亮有暗。每次,可以选择一个格子,选定后它与它相邻的格子的亮暗状态都会发生改变,在此处,相邻指的是 4-相邻 (有公共边),如下图:
易知,如果某一个格子被选择了偶 (奇) 数次,效果等价于它没有被选择 (被选择),因此,我们限制每个格子至多被选择 $1$ 次。
给定初始方阵中每盏灯的亮暗情况,请输出一个使所有灯都熄灭的方案,格式见输出格式。
如果有多个方案,输出任意一个方案,如果无解,输出 No solution
。
输入格式
第一行包含一个正整数 $n$,表示方阵的行数和列数。
接下来的 $n$ 行,每行包含一个长度为 $n$ 的字符串,其中第 $i$ 行的第 $j$ 个字符为 #
,如果原来灯阵中第 $i$ 行第 $j$ 列的灯是亮的,否则为 .
。
输出格式
如果有解,则输出 $n$ 行,每行一个长度为 $n$ 的字符串,其中第 $i$ 行的第 $j$ 个字符为 #
,如果需要选择灯阵中第 $i$ 行第 $j$ 列的格子,否则为 .
;
如果无解,输出一行,为 No solution
。
样例 1
input
4
####
#..#
#..#
####
output
#..#
....
....
#..#
样例 2
input
5
#....
.....
.....
.....
.....
output
No solution
样例 3
input
5
.###.
.##.#
#...#
##..#
#####
output
...#.
.#..#
#....
.....
.#..#
见附加文件下的 ex_light4.in 与 ex_light4.out。
该组样例的数据范围同第 4 个 Subtask,且有唯一解。
注意:样例 1 和样例 3 存在不唯一的解,所以和样例输出不相同并不代表答案错误,评测时将使用 Special Judge。
数据范围与提示
对于所有数据,满足 $2 \leq n \leq 1000$。
Subtask # | 分值 | $n$ | 其它性质 |
---|---|---|---|
1 | $8$ | $\leq 5$ | 无 |
2 | $13$ | $\leq 20$ | 无 |
3 | $9$ | $\leq 24$ | 保证初始所有的灯都是亮的 |
4 | $22$ | $\leq 100$ | 无 |
5 | $18$ | $\leq 300$ | 保证有且仅有一解 (旋转、翻转被认为是不同的解) |
6 | $30$ | $\leq 1000$ | 无 |