AT_dwacon6th_prelims_d Arrangement
题目描述
ニワンゴ君有 $N$ 张卡片。每张卡片上标有 $1,2,\ldots,N$ 的编号。ニワンゴ君打算把这些卡片排成一行。
他想知道,是否存在一种排列方式,使得以下 $N$ 个条件全部满足。如果存在,请帮他判断,并输出字典序最小的排列。
- 编号为 $1$ 的卡片右边的卡片(如果存在)不能是 $a_1$。
- 编号为 $2$ 的卡片右边的卡片(如果存在)不能是 $a_2$。
- $\vdots$
- 编号为 $N$ 的卡片右边的卡片(如果存在)不能是 $a_N$。
输入格式
输入通过标准输入给出,格式如下:
> $N$ $a_1$ $a_2$ $\ldots$ $a_N$
输出格式
如果不存在满足条件的排列,输出 `-1`。如果存在,输出满足条件的字典序最小的排列。设 $b_i$ 表示从左到右第 $i$ 张卡片的编号。
> $b_1$ $b_2$ $\ldots$ $b_N$
说明/提示
### 限制条件
- $2 \leq N \leq 10^{5}$
- $1 \leq a_i \leq N$
- $a_i \neq i$
### 样例解释 1
- 比如排列 $(1,3,2,4)$,虽然存在更小的排列 $(1,2,3,4)$,但后者不满足“编号为 $1$ 的卡片右边不是 $2$”的条件,因此不合适。
### 样例解释 2
- 如果不存在满足条件的排列,请输出 `-1`。
由 ChatGPT 4.1 翻译