100 atcoder#ABC065B. [ABC065B] Trained?

[ABC065B] Trained?

题目描述

筋力をつけたい高橋君は、AtCoder 社のトレーニング設備で、トレーニングをすることにしました。

AtCoder 社のトレーニング設備には N N 個のボタンがついており、ちょうど 1 1 個のボタンが光っています。 ボタンには、1 1 から N N までの番号がついています。 ボタン i i が光っているときにそのボタンを押すと、ボタン i i の明かりが消え、その後ボタン ai a_i が光ります。i=ai i=a_i であることもあります。 光っていないボタンを押しても、何も起こりません。

最初、ボタン 1 1 が光っています。高橋君は、ボタン 2 2 が光っている状態で、トレーニングをやめたいと思っています。

そのようなことは可能かどうか判定し、もし可能なら最低で何回ボタンを押す必要があるかを求めてください。

输入格式

入力は以下の形式で標準入力から与えられる。

N N a1 a_1 a2 a_2 : aN a_N

输出格式

ボタン 2 2 を光らせることが不可能な場合、1 -1 を出力せよ。 そうでない場合、ボタン 2 2 を光らせるために必要なボタンを押す回数の最小値を出力せよ。

题目大意

有一堆按钮,按钮的编号是从 11nn 。第 ii 个按钮对应第 ii 个灯。

你按下第 ii 个按钮时,如果你按下的按钮对应的灯是关闭的,那么灯 aia_i 会开启,灯 ii 会关闭; 如果按钮对应的灯是开启的,那么按下它就什么都不会发生。

最初,灯 11 是关闭的,其他的灯都开着。 高桥君希望最后灯 22 是关闭的。

输出他最少按下按钮的次数,如果不能则输出 1-1

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

提示

制約

  • 2  N  105 2\ ≦\ N\ ≦\ 10^5
  • 1  ai  N 1\ ≦\ a_i\ ≦\ N

Sample Explanation 1

ボタン 1,3 1,3 の順に押せばよいです。

Sample Explanation 2

ボタン 1 1 を押すとボタン 3 3 、ボタン 3 3 を押すとボタン 1 1 が光るので、ボタン 2 2 が光ることはありません。