ABC065 B - Trained?
問題はこちら atcoder.jp
方針
ボタンの挙動は問題文の通りに作ります。
問題はボタン が点けられるかの判定ですが, 回の操作後までにボタン が光らない場合,初期のボタン も含めてこれまでに 回ボタンが光っています。ボタンの数は 個なので,少なくとも 個のランプが 度光っています。つまりループしています。多分鳩の巣原理です。
コード
#include <bits/stdc++.h> using namespace std; int main(){ int n; cin>>n; vector<int> a(n); for(int i=0; i<n; i++){ cin>>a[i]; } int count=1,value=0; while(a[value]!=2){ value=a[value]-1; count++; if(count>n){ count=-1; break; } } cout<<count<<endl; }