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