AT_abc065_b [ABC065B] Trained?

题目描述

高桥君想要增强自己的肌肉力量,于是决定在 AtCoder 公司的训练设备上进行训练。 AtCoder 公司的训练设备上有 $N$ 个按钮,恰好有 $1$ 个按钮是亮着的。每个按钮都标有 $1$ 到 $N$ 的编号。当按钮 $i$ 亮着时,按下该按钮会使按钮 $i$ 熄灭,然后按钮 $a_i$ 亮起。可能存在 $i = a_i$ 的情况。按下未亮着的按钮不会发生任何事情。 最开始,按钮 $1$ 是亮着的。高桥君希望在按钮 $2$ 亮着的时候停止训练。 请判断是否有可能让按钮 $2$ 亮起来。如果可能,请求出最少需要按多少次按钮才能让按钮 $2$ 亮起来。

输入格式

输入以以下格式从标准输入读入。 > $N$ > $a_1$ $a_2$ $\ldots$ $a_N$

输出格式

如果无法让按钮 $2$ 亮起来,输出 $-1$。否则,输出让按钮 $2$ 亮起来所需按按钮的最小次数。

说明/提示

## 限制条件 - $2 \leq N \leq 10^5$ - $1 \leq a_i \leq N$ ## 样例解释 1 依次按下按钮 $1$ 和按钮 $3$ 即可。 ## 样例解释 2 按下按钮 $1$ 后按钮 $3$ 亮起,按下按钮 $3$ 后按钮 $1$ 亮起,因此无法让按钮 $2$ 亮起来。 由 ChatGPT 4.1 翻译