A permutation of length n is an array containing each integer from 1 to n exactly once. For example, q = [4, 5, 1, 2, 3] is a permutation. For the permutation q the square of permutation is the permutation p that p[i] = q[q[i]] for each i = 1… n. For example, the square of q = [4, 5, 1, 2, 3] is p = q^2 = [2, 3, 4, 5, 1].
This problem is about the inverse operation: given the permutation p you task is to find such permutation q that q^2 = p. If there are several such q find any of them.
Input
The first line contains integer n (1 ≤ n ≤ 106) — the number of elements in permutation p.
The second line contains n distinct integers p1, p2, …, pn (1 ≤ pi ≤ n) — the elements of permutation p.
Output
If there is no permutation q such that q2 = p print the number “-1”.
If the answer exists pr

给定一个置换p,你的任务是找到一个置换q,使得q的平方等于p。如果存在多个解,输出任意一个。输入包含置换p的长度n和p的元素,输出应该是一个置换q或者如果不存在这样的q则输出"-1"。解决方案涉及将置换分解为不相交的循环,并考虑循环的奇偶性来构建答案。
最低0.47元/天 解锁文章
145

被折叠的 条评论
为什么被折叠?



