#P51799. 「VK Cup 2018 Round 2」神秘马赛克

「VK Cup 2018 Round 2」神秘马赛克

题目描述

有一个 nnmm 列共 n×mn \times m 个白色格子组成的矩形网格。

阿尔卡狄在网格上进行了若干(可能为零)次操作。第 ii 次操作中,阿尔卡狄选择了一个非空的行的集合 RiR_i 和一个非空的列的集合 CiC_i。对于每个 RiR_i 的元素 rr 和每个 CiC_i 的元素 cc,处在行 rr 和列 cc 交点处的格子被染成黑色。

有一条限制是,每一行和每一列均只能最多被选择一次。换言之,不存在有序整数对 (i,j)(i, j)iji \leq j)满足 RiRjR_i \cap R_j \neq \varnothingCiCjC_i \cap C_j \neq \varnothing,其中 \cap 表示集合取并,\varnothing 表示空集。

对于一个给定的网格最终染色情况,请判断它是否可以由一系列合法的操作得到。

输入格式

输入的第一行包含两个空格分隔的正整数 nnmm —— 分别表示网格的行数和列数。

接下来 nn 行每行包含 mm 个字符,每一个是 .(表示白色)和 #(表示黑色)之一,描述一个网格的染色情况。

输出格式

如果给定的网格可以由一系列合法的操作得到,输出 Yes;否则输出 No

样例 1

5 8
.#.#..#.
.....#..
.#.#..#.
#.#....#
.....#..
Yes

样例 1 给定的网格可以由三次操作得到,如下图。相同的颜色表示相同的操作。

Sample 1

5 5
..#..
..#..
#####
..#..
..#..
No

样例 2 给定的网格无法由合法的操作得到。要将中间一行的格子染色,所有的列需要在一次操作中被全部选择;但这样一来,中间一列的另四个格子必然无法被染色。

5 9
........#
#........
..##.#...
.......#.
....#.#.#
No

数据范围与提示

子任务 1 1n,m501 \leq n, m \leq 50
子任务 2 1n,m10001 \leq n, m \leq 1000