AT_arc095_c [ARC095E] Symmetric Grid

题目描述

有一个 $H$ 行 $W$ 列的网格,每个格子里写有一个小写英文字母。具体来说,从上往下第 $i$ 行,从左往右第 $j$ 列的格子中写的字母等于字符串 $S_i$ 的第 $j$ 个字符。 すぬけ君可以对这个网格进行任意次数如下操作: - 选择两行并交换它们的位置,或者选择两列并交换它们的位置。 すぬけ君希望使这个网格变为点对称。也就是说,对于任意的 $1 \leq i \leq H$,$1 \leq j \leq W$,从上往下第 $i$ 行、从左往右第 $j$ 列的格子中的字母,和从上往下第 $H+1-i$ 行、从左往右第 $W+1-j$ 列的格子中的字母相同。 请判断すぬけ君是否有可能通过上述操作实现目标。

输入格式

输入通过标准输入给出,格式如下: > $H$ $W$ > $S_1$ > $S_2$ > $\vdots$ > $S_H$

输出格式

如果可以使网格变为点对称,输出 `YES`;否则输出 `NO`。

说明/提示

## 限制 - $1 \leq H \leq 12$ - $1 \leq W \leq 12$ - $|S_i| = W$ - $S_i$ 只包含小写英文字母 ## 样例解释 1 如下面的图片所示,将第 2 列和第 3 列交换后,网格可以变为点对称。 ![](https://img.atcoder.jp/arc095/2b61caf45e7c5c7311e3944f3418b0bb.png) 由 ChatGPT 4.1 翻译