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