AT_arc208_d [ARC208D] Symmetric Matrix
题目描述
给定一个长度为 $N$ 的整数序列 $Y=(Y_1,Y_2,\ldots,Y_N)$,其中每个元素都在 $1$ 到 $N$ 之间(包含 $1$ 和 $N$)。
判断是否存在一个 $N \times N$ 的整数矩阵 $A=(A_{i,j})$($1 \le i, j \le N$),满足如下所有条件,并在存在时给出一种构造方案:
- $1\le A_{i,j} \le N$ ($1\le i \le N,\ 1\le j\le N$)。
- $A_{i,j}=A_{j,i}$ ($1\le i\le N,\ 1\le j\le N$)。
- $A_{i,j_1} \neq A_{i,j_2}$ ($1\le i\le N,\ 1\le j_1 < j_2 \le N$)。
- $A_{i,Y_i} = 1$ ($1\le i\le N$)。
共有 $T$ 组测试数据,依次解决每组数据。
输入格式
输入从标准输入读入,格式如下:
> $T$
>
> $\text{case}_1$
>
> $\text{case}_2$
>
> $\vdots$
>
> $\text{case}_T$
每组测试数据的格式如下:
> $N$
>
> $Y_1$
>
> $Y_2$
>
> $\ldots$
>
> $Y_N$
输出格式
请按照输入顺序输出每组测试数据的答案,每组结果之间用换行分隔。
对于每一组数据,如果不存在满足条件的矩阵 $A$,输出 No。
否则,输出满足条件的矩阵 $A$,格式如下:
> Yes
>
> $A_{1,1}$ $A_{1,2}$ $\ldots$ $A_{1,N}$
>
> $A_{2,1}$ $A_{2,2}$ $\ldots$ $A_{2,N}$
>
> $\vdots$
>
> $A_{N,1}$ $A_{N,2}$ $\ldots$ $A_{N,N}$
如果有多个 $A$ 满足要求,输出任意一个均可。
说明/提示
### 样例解释 1
以第一个测试用例为例,可以验证样例输出中的 $A$ 确实满足所有条件。除此之外,例如如下 $A$ 也同样符合要求:
```
1 3 2
3 2 1
2 1 3
```
### 数据范围
- $1\le T\le 5000$
- $1\le N \le 500$
- 所有测试用例的 $N^2$ 之和不超过 $500^2$。
- $1\le Y_i\le N$
- 所有输入数值均为整数。
由 ChatGPT 5 翻译