CF612E Square Root of Permutation
题目描述
一个长度为 $n$ 的置换是一个包含从 $1$ 到 $n$ 每个整数恰好一次的数组。例如,$q=[4,5,1,2,3]$ 是一个置换。对于置换 $q$,其平方是另一个置换 $p$,满足对于每个 $i=1 \ldots n$,有 $p_i=q_{q_i}$。例如,$q=[4,5,1,2,3]$ 的平方是 $p=q^2=[2,3,4,5,1]$。
在本题,你要思考的是逆运算:给定置换 $p$,你需要找到一个置换 $q$ 使得 $q^2=p$。如果存在多个这样的 $q$,找出任意一个即可。
输入格式
第一行包含一个整数 $n$($1 \le n \le 10^6$)——置换 $p$ 的元素个数。
第二行包含 $n$ 个不同的整数 $p_1, p_2, \ldots, p_n$($1 \le p_i \le n$)——置换 $p$ 的元素。
输出格式
如果不存在置换 $q$ 使得 $q^2=p$,则输出 `-1`。
如果存在答案,则输出它。输出一行包含 $n$ 个不同的整数 $q_i$($1 \le q_i \le n$)——置换 $q$ 的元素。如果有多个解,输出任意一个即可。