http://abc065.contest.atcoder.jp/tasks/abc065_b
解説
http://abc065.contest.atcoder.jp/submissions/1379756
この問題を見てまず気づくことが「状態は決定的に遷移する」ということ。
つまり、初期状態から次の状態へは1通りしかないので、愚直にシミュレーションしていっても間に合うなということが分かる。
(点数的にもシミュレーションだろうとも思える)
なので、最大の10^5回ほどシミュレーションしてみて、ボタン2が光らないなら"-1"で、ボタン2が光ったら、その時点で回数を答える。
以下のコードは1-indexedで書いている。
問題によっては1-indexedで書いた方がデバッグに役に立つ場合がある。
(今回はそんなに複雑ではないので、なんでもいいけれど)
int N, A[101010]; //--------------------------------------------------------------------------------------------------- void _main() { cin >> N; rep(i, 1, N + 1) cin >> A[i]; int cur = 1; rep(i, 0, 101010) { cur = A[cur]; if (cur == 2) { printf("%d\n", i + 1); return; } } printf("-1\n"); }