CF1790C Premutation

题目描述

一个长度为 $n$ 的数列被称为排列,如果它恰好包含 $1$ 到 $n$ 的所有整数各一次。例如,数列 $[3, 1, 4, 2]$、$[1]$ 和 $[2, 1]$ 是排列,但 $[1, 2, 1]$、$[0, 1]$ 和 $[1, 3, 4]$ 不是排列。 Kristina 有一个长度为 $n$ 的排列 $p$。她在白板上写下了 $n$ 次这个排列,每次写的时候: - 在第 $i$ 次($1 \le i \le n$)写的时候,她跳过了第 $i$ 个元素 $p_i$。 所以,她总共写下了 $n$ 个长度为 $n-1$ 的数列。例如,假设 Kristina 有一个排列 $p = [4, 2, 1, 3]$,长度为 $4$。那么她做了如下操作: 1. 写下数列 $[2, 1, 3]$,跳过了原排列中的 $p_1=4$。 2. 写下数列 $[4, 1, 3]$,跳过了原排列中的 $p_2=2$。 3. 写下数列 $[4, 2, 3]$,跳过了原排列中的 $p_3=1$。 4. 写下数列 $[4, 2, 1]$,跳过了原排列中的 $p_4=3$。 你知道白板上写下的所有 $n$ 个数列,但你不知道它们被写下的顺序。它们以任意顺序给出。请你根据这些数列还原出原始排列。 例如,如果你知道数列 $[4, 2, 1]$、$[4, 2, 3]$、$[2, 1, 3]$、$[4, 1, 3]$,那么原始排列就是 $p = [4, 2, 1, 3]$。

输入格式

输入的第一行包含一个整数 $t$($1 \le t \le 10^4$),表示测试用例的数量。 接下来是每个测试用例的描述。 每个测试用例的第一行包含一个整数 $n$($3 \le n \le 100$)。 接下来有 $n$ 行,每行包含恰好 $n-1$ 个整数,描述了白板上写下的一个数列。 保证所有数列都可以由某个排列 $p$ 得到,并且所有输入集合的 $n^2$ 之和不超过 $2 \cdot 10^5$。

输出格式

对于每个测试用例,输出一行,包含一个排列 $p$,使得给定的 $n$ 个数列可以由它得到。 保证答案存在且唯一。换句话说,对于每个测试用例,所需的排列一定存在且只有一个。

说明/提示

第一个测试用例在题目描述中已经给出。 在第二个测试用例中,数列的顺序就是正确的顺序。 由 ChatGPT 4.1 翻译