- Quiz
- AC
- その他
- コンテスト中は周期を使って解いたが、こういうワープ系はダブリングで捉えるとより一般的
- ということで解き直したらかなり簡潔になった
- 追記:周期性でやるよりデバッグしやすい
int main(){ // input ll N,K; cin>>N>>K; VV T(60, VI(N)); // doubling table rep(i,N){ cin>>T[0][i]; T[0][i]--; } FOR(i,1,60){ rep(j,N){ ll a = T[i-1][j]; T[i][j] = T[i-1][a]; } } auto bi = bitset<60>(K); ll now=0; rep(i,60){ if(bi[i]==1){ now = T[i][now]; } } p(now+1); return 0; }