#12451. C - Grid Repainting 2 / 网格重新上色 2
C - Grid Repainting 2 / 网格重新上色 2
题目名称
C - Grid Repainting 2 / 网格重新上色 2
题目描述
有一个由 H 行、W 列组成的网格画布。
网格中第 i 行、第 j 列的格子记为 (i, j)。
一开始,所有格子都是白色。 现在给出一个目标图案,用字符表示:
- 若
s[i][j] = '#',表示目标状态下格子(i, j)应为 黑色; - 若
s[i][j] = '.',表示目标状态下格子(i, j)应为 白色。
画家 square1001 能进行的操作非常有限,他 只能反复进行如下操作(可以是 0 次):
选择两个在网格中**相邻(上下或左右相邻)**的格子, 并将这两个格子都涂成黑色。
如果某个格子本来已经是黑色,再次被涂黑也没有影响。 他 不能 单独涂黑一个格子,也不能把黑色重新涂回白色。
请你判断: 是否存在一种操作序列,使得最终画布与给定的目标图案 完全一致?
- 若可以做到,输出
Yes; - 否则输出
No。
输入格式
从标准输入读取数据。
- 第一行包含两个整数
H、W,表示网格的行数和列数。 - 接下来
H行,每行一个长度为W的字符串,表示网格的目标图案。 第i行的字符串记为s[i],其中:s[i][j] = '#'表示该位置目标为黑色;s[i][j] = '.'表示该位置目标为白色。
输出格式
输出一行:
- 若 square1001 能够通过若干次操作得到目标图案,输出:
Yes
- 否则输出:
No
大小写需与上面完全一致。
数据范围
1 ≤ H ≤ 501 ≤ W ≤ 50- 对于所有的
1 ≤ i ≤ H, 1 ≤ j ≤ W,s[i][j]仅为'#'或'.'。
样例一
输入
3 3
.#.
###
.#.
输出
Yes

(可以通过多次选择相邻格子、成对涂黑,实现该图案。)
样例二
输入
5 5
#.#.#
.#.#.
#.#.#
.#.#.
#.#.#
输出
No
样例三
输入
11 11
...#####...
.##.....##.
#..##.##..#
#..##.##..#
#.........#
#...###...#
.#########.
.#.#.#.#.#.
##.#.#.#.##
..##.#.##..
.##..#..##.
输出
Yes
每个黑格 '#' 至少要有一个上下左右方向上的黑格邻居,否则一定不可能实现。