AT_abc317_g [ABC317G] Rearranging

题目描述

有一个 $N$ 行 $M$ 列的网格。自上而下第 $i$ 行、从左到右第 $j$ 列的格子中写有整数 $A_{i,j}$。 这里,网格中所有 $NM$ 个整数恰好包含 $1,\ldots,N$ 各 $M$ 个。 你可以按如下步骤对格子中的数进行交换操作: - 按照 $i=1,\ldots,N$ 的顺序进行如下操作: - 可以任意重新排列第 $i$ 行中的数。也就是说,可以任意选择 $1,\ldots,M$ 的一个排列 $P=(P_1,\ldots,P_M)$,并将 $A_{i,1},\ldots,A_{i,M}$ 同时替换为 $A_{i,P_1},\ldots,A_{i,P_M}$。 你的目标是,经过操作后,使得每一列都恰好包含 $1,\ldots,N$ 各一次。请判断是否可能做到,如果可能,请输出操作后的网格状态。

输入格式

输入以如下格式从标准输入读入。 > $N$ $M$ > $A_{1,1}$ $\ldots$ $A_{1,M}$ > $\vdots$ > $A_{N,1}$ $\ldots$ $A_{N,M}$

输出格式

如果无法通过操作使每一列都恰好包含 $1,\ldots,N$ 各一次,则输出 `No`。 如果可以做到,第一行输出 `Yes`,接下来 $N$ 行输出操作后的网格状态,使得每一列都恰好包含 $1,\ldots,N$ 各一次。 令操作后自上而下第 $i$ 行、从左到右第 $j$ 列的数为 $B_{i,j}$,则对于每个 $1\leq i\leq N$,第 $i+1$ 行输出 $B_{i,1},\ldots,B_{i,M}$,各数之间用空格分隔。 若有多组合法答案,输出任意一组均可。

说明/提示

### 限制条件 - $1\leq N,M\leq 100$ - $1\leq A_{i,j}\leq N$ - 输入均为整数 - $NM$ 个数 $A_{1,1},\ldots,A_{N,M}$ 恰好包含 $1,\ldots,N$ 各 $M$ 个 ### 样例说明 1 除此之外,以下输出也是正确答案。 ``` Yes 1 1 2 3 3 2 ``` 由 ChatGPT 4.1 翻译