CF924A Mystical Mosaic

题目描述

有一个 $n$ 行 $m$ 列的矩形网格,初始时所有格子都是白色的。 Arkady 对其进行了若干次(可能为零次)操作。在第 $i$ 次操作中,选择了一个非空的行集合 $R_{i}$ 和一个非空的列集合 $C_{i}$。对于每个 $r \in R_{i}$ 和每个 $c \in C_{i}$,第 $r$ 行第 $c$ 列的交点会被涂成黑色。 还有一个额外限制:每一行或每一列在所有操作中最多只能被选择一次。换句话说,不存在一对 $ (i, j) $($i < j$),使得 $R_{i} \cap R_{j} \neq \varnothing$ 或 $C_{i} \cap C_{j} \neq \varnothing$,其中 $\varnothing$ 表示空集。 你需要判断,是否存在一种合法的操作序列,可以得到给定的最终网格。

输入格式

第一行包含两个用空格分隔的整数 $n$ 和 $m$($1 \leq n, m \leq 50$),表示网格的行数和列数。 接下来的 $n$ 行,每行包含一个长度为 $m$ 的字符串,每个字符为 '.'(表示白色格子)或 '#'(表示黑色格子),表示期望得到的网格状态。

输出格式

如果存在一种合法的操作序列可以得到给定的网格,输出 "Yes";否则输出 "No"(不带引号,大小写均可)。 你可以以任意大小写输出每个字符。

说明/提示

对于第一个样例,期望的网格可以通过 $3$ 次操作得到,如下图所示。 ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF924A/74e6b77ab65d49c640ecfae7cdd0e283eea435f7.png) 对于第二个样例,无法得到期望的网格。因为为了涂黑中间一行,需要在一次操作中选择第三行和所有列,但之后不能再选择任何列,因此无法再涂黑中间一列的其他格子。 由 ChatGPT 4.1 翻译