#864. 重涂网格

重涂网格

题目描述

给定一个 HHWW 列的网格,初始时所有格子都是白色的。记第 ii 行第 jj 列的格子为 (i,j)(i,j)

你可以执行以下操作任意次(包括 00 次):

  • 选择两个水平或垂直相邻的格子,并将它们涂成黑色。已经涂成黑色的格子可以被重复涂色,其颜色保持黑色不变。

现在给定一个目标状态,由字符矩阵 ss 表示:如果 si,js_{i,j}#,则目标状态下格子 (i,j)(i,j) 必须是黑色;如果 si,js_{i,j}.,则目标状态下格子 (i,j)(i,j) 必须是白色。

请判断是否有可能通过若干次上述操作,将网格涂成目标状态。

输入格式

第一行包含两个整数 H,WH, W —— 分别表示网格的行数和列数。

接下来 HH 行,每行包含一个长度为 WW 的字符串,其中第 ii 行的第 jj 个字符 si,js_{i,j} 表示格子 (i,j)(i,j) 的目标颜色。

输出格式

如果能够达到目标状态,输出 Yes;否则输出 No

样例输入 1

3 3
.#.
###
.#.

样例输出 1

Yes

样例输入 2

5 5
#.#.#
.#.#.
#.#.#
.#.#.
#.#.#

样例输出 2

No

样例输入 3

11 11
...#####...
.##.....##.
#..##.##..#
#..##.##..#
#.........#
#...###...#
.#########.
.#.#.#.#.#.
##.#.#.#.##
..##.#.##..
.##..#..##.

样例输出 3

Yes

说明

样例解释

  • 在第一个样例中,可以分别选择 (1,2)(1,2)(2,2)(2,2)(2,1)(2,1)(2,2)(2,2)(2,3)(2,3)(2,2)(2,2)(3,2)(3,2)(2,2)(2,2) 进行涂色操作(多次操作会覆盖中心的黑点),从而得到符合目标的图案。

  • 在第二个样例中,所有的目标黑点均互相孤立,而每次操作只能同时涂黑相邻的两个格子,因此不可能在不涂黑目标为白色的格子的前提下将黑点涂满。

数据范围

  • 对于所有测试点,保证 1H,W501 \le H, W \le 50
  • 保证所有的 si,js_{i,j} 均为 .#