AT_arc209_d [ARC209D] A_A_i
题目描述
给定一个长度为 $N$ 的序列 $A = (A_1, A_2, \ldots, A_N)$,每个元素要么是 $1$ 到 $N$ 之间的整数(包含 $1$ 和 $N$),要么是 $-1$。
Snuke 决定用这个序列 $A$ 创建一个新序列。
首先,将序列 $A$ 中所有的 $-1$ 替换成 $1$ 到 $N$ 之间的某个整数(包含 $1$ 和 $N$)。
接着,根据如下公式创建长度为 $N$ 的序列 $B = (B_1, B_2, \ldots, B_N)$:
- $B_i = A_{A_i}$
请你找出字典序最小的可能的序列 $B$。
有 $T$ 组测试数据。请你分别求解每组数据。
什么是序列的字典序?如果存在整数 $1 \leq i \leq N$,使得满足以下两个条件,则序列 $C = (C_1, C_2, \ldots, C_N)$ **字典序小于** 序列 $D = (D_1, D_2, \ldots, D_N)$:
- $(C_1, C_2, \ldots, C_{i-1}) = (D_1, D_2, \ldots, D_{i-1})$
- $C_i$ 在数值上小于 $D_i$。
输入格式
输入按如下格式给出:
>T
case_1
case_2
⋮
case_T
每组测试数据按如下格式给出:
>N A_1 A_2 … A_N
输出格式
对于每组测试数据,输出字典序最小的可能序列 $B$,每组测试数据占一行。
说明/提示
### 样例解释 1
在第一个测试用例中,Snuke 替换之前的序列 $A$ 为 $(4, -1, -1, 3)$。
假设他将其替换为 $A = (4, 3, 1, 3)$。
则 $B = (A_4, A_3, A_1, A_3) = (3, 1, 4, 1)$。
无法得到字典序更小的序列 $B$ 了。
### 约束条件
- $1 \leq T \leq 10^5$
- $1 \leq N \leq 5 \times 10^5$
- $1 \leq A_i \leq N$ 或 $A_i = -1$
- 所有测试数据中 $N$ 的总和不超过 $5 \times 10^5$
- 所有输入值均为整数。
由 ChatGPT 5 翻译