U652417 [YCU Cup] HM 的涂鸦墙

题目背景

**HM**(绿名)对艺术有着独特的追求。寒假集训期间,他趁 **Aerhuo** 不注意,拿起训练室的油漆刷,在白墙上进行了一番“创作”。 ![hm头像](https://cdn.luogu.com.cn/upload/image_hosting/q9hx8sqn.png) HM 的创作规则如下: 1. 初始墙面是全白的(颜色为 0)。 2. 他每次会选择一种**从未在墙上使用过**的颜色 $c$($1 \le c \le 50$)。 3. 他选择墙上的一个**矩形区域**,用这种颜色将其完全覆盖。 * 如果该区域之前是白色,现在变成了颜色 $c$。 * 如果该区域之前被涂过其他颜色,新颜色 $c$ 会覆盖掉旧颜色。 4. 他进行了若干次操作,直到满意为止。 训练结束后,Aerhuo 记录下了墙面最终的颜色分布。看着墙上杂乱的色块,Aerhuo 怀疑 HM 并不是每次都画矩形,可能中间偷懒乱涂了。 请你帮 Aerhuo 判断:**这面墙的图案是否可能由若干次合法的矩形覆盖操作形成?**

题目描述

给定一个 $H \times W$ 的网格,代表墙面的最终状态。 网格中的数字表示颜色: - **0**:表示白色背景(未被任何油漆覆盖)。 - **1 ~ 50**:表示不同的油漆颜色。 你需要判断是否存在一个合法的操作序列(每种颜色至多使用一次,且每次涂且仅涂一个矩形),能生成输入的网格状态。 **本题包含多组测试数据。**

输入格式

第一行包含一个整数 $T$ ($1 \le T \le 1000$),表示测试数据的组数。 接下来对于每组测试数据: - 第一行包含三个整数 $H, W, K$,分别表示墙面的高度、宽度以及出现的最大颜色编号。 - 接下来 $H$ 行,每行包含 $W$ 个整数 $C_{i,j}$,表示第 $i$ 行第 $j$ 列的颜色。

输出格式

对于每组测试数据: - 如果可能形成该图案,输出 `YES`。 - 否则,输出 `NO`。

说明/提示

对于 $100\%$ 的数据: - $1 \le T \le 1000$ - $1 \le H, W \le 2000$ - $0 \le C_{i,j} \le K$ - 所有测试数据的 $\sum (H \times W) \le 2 \cdot 10^6$。