問題
考え方
ポイント
- 考察大事。サンプルを書き出す。
- flag系は、はじめにリストを用意しておく
- indexと○個目の対応は、メモを書きながらミスらないようにする
- a_list = [0] + list(map(int,input().split()))
- roop_end_index = len(town_hist_list) - 1
解法
n,k = map(int,input().split())
a_list = [0] + list(map(int,input().split()))
town_num_tmp = 1
seen = [-1]*(n+1)
town_hist_list = []
while seen[town_num_tmp] == -1:
seen[town_num_tmp] = 1
town_hist_list.append(town_num_tmp)
town_num_tmp = a_list[town_num_tmp]
roop_end_index = len(town_hist_list) - 1
roop_start_index = town_hist_list.index(town_num_tmp)
roop_range = roop_end_index - roop_start_index + 1
if k < roop_end_index:
print(town_hist_list[k])
else:
print(town_hist_list[(k-roop_start_index)%roop_range+roop_start_index])