https://atcoder.jp/contests/abc065/tasks/abc065_b
1번 버튼부터 시작해서, 1번 버튼에서 이어지는 버튼인 a[1]번 버튼으로, a[1]번 버튼에서 이어지는 버튼인 a[a[1]]번 버튼으로, a[a[1]] 번 버튼에서 이어지는 버튼인 a[a[a[1]]] 버튼으로.... 계속해서 찾아가면서 2번 버튼에 도달하면 버튼을 거쳐간 횟수를 출력한다.
방문 배열을 추가해서, 만약 이전에 이어졌던 버튼에 다시 도달했다면 2번 버튼에 도달하지 못하고 루프가 발생한다는 뜻이므로 -1을 출력한다.
import sys
input = sys.stdin.readline
n = int(input().rstrip())
arr = [int(input().rstrip()) for _ in range(n)]
vis = [0 for _ in range(n)]
nowidx = 0
vis[0] = 1
cnt = 0
while nowidx != 1:
nowidx = arr[nowidx]-1
if vis[nowidx] == 1:
cnt = -1
break
vis[nowidx] = 1
cnt += 1
print(cnt)