#D0790. 按钮追踪
按钮追踪
题目描述
小 B 在玩一个解谜游戏。游戏台上有 个发光的按钮,对应编号为 到 ,我们称编号为 的按钮为按钮 。游戏开始时,只有按钮 是亮起的状态。
游戏规定:玩家只能按下亮着的按钮。
每个按钮上都写着一个数字,按钮 上写着 (),这表示:当你按下按钮 ,按钮 会熄灭,同时按钮 会亮起。
小 B 的目标是让按钮 亮起。请你帮他计算:从按钮 出发,最少需要按多少次按钮才能让按钮 亮起?
如果无论如何都无法让按钮 亮起(即陷入了不包含 的循环),则输出 。
输入格式
输入共 行。
第一行,一个整数 ,表示按钮的数量。
接下来 行,每行一个整数,其中第 行的整数为 ,表示按下按钮 后下一个亮起的按钮编号。
输出格式
输出共一行。
若能到达按钮 ,输出一个整数表示最少按键次数;若不能到达,输出 。
5
3
1
2
4
5
2
4
3
4
1
2
-1
样例解释
对于样例 1:初始按钮 亮起。按 按钮 亮;按 按钮 亮。共按了 次(按 、)。
对于样例 2:路径为 $1 \rightarrow 3 \rightarrow 1 \rightarrow 3 \rightarrow \dots$,死循环,无法到达 。
数据规模与约定
| 子任务 | 分值 | 限制 |
|---|---|---|
| ,保证能到达按钮 | ||
对于 的数据,,。
相关
在下列比赛中: