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 翻译