mayoko’s diary

プロコンとかいろいろ。

AtCoder Beginner Contest 030 D - へんてこ辞書

解法

python 多倍長最高で通します。

N, a = map(int, raw_input().split())
a -= 1
k = input()
b = map(int, raw_input().split())
for i in range(N):
    b[i] -= 1

used = [-1]*N
step = [-1]*N
cur = a
loop = 0
cnt = 0
while (True):
    if (used[cur] == -1):
        used[cur] = cnt
        step[cnt] = cur
        cnt += 1
        cur = b[cur]
    else:
        loop = cnt-used[cur]
        break

if k <= used[cur]:
    print step[k]+1
else:
    k -= used[cur]
    k %= loop
    print step[used[cur]+k]+1