#CSES1160. 行星查询 II

行星查询 II

题目背景

翻译自 CSES-1160 题。

题目描述

你正在玩一个由 nn 个行星组成的游戏。每个行星都有一个传送门,可以传送到另一个行星(或者是它自己)。

你的任务是处理 qq 个查询,查询的形式是:你现在在行星 aa 上,想要到达行星 bb。请问最少需要多少次传送?

输入格式

第一行包含两个整数 nnqq:分别表示行星的数量和查询的数量。行星编号为 1,2,,n1,2,…,n

第二行包含 nn 个整数 t1,t2,,tnt_1,t_2,…,t_n:表示每个行星的传送门目的地。如果 ti=it_i = i,则表示该行星的传送门指向自己。

接下来的 qq 行,每行包含两个整数 aabb:表示你现在在行星 aa 上,想要到达行星 bb

输出格式

对每个查询,输出到达目标行星所需的最少传送次数。如果无法到达目标行星,输出 1−1

样例

5 3
2 3 2 3 2
1 2
1 3
1 4
1
2
-1

说明/提示

1n,q21051 \leq n,q \leq 2 \cdot 10^5

1tin1 \leq t_i \leq n

1a,bn1 \leq a,b \leq n