만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

Snakes&Snakes

면접 대비

시간 제한1초메모리 제한1024 MB

요약
6이 나오면 같은 턴에 다시 굴릴 수 있는 규칙에서, 말을 1번 칸에서 N번 칸까지 보내는 최소 턴 수를 구합니다.
난이도

보통10점 중 5점

유형
BFS, 최단 경로, 그래프
정답자
아직 제출이 없습니다

문제

바딤에게 Snakes&Snakes 게임용 일차원 보드가 있다. 보드는 왼쪽에서 오른쪽으로 1번부터 NN번까지 번호가 붙은 NN개의 칸으로 이루어져 있다. 처음에 말은 1번 칸에 놓여 있다. 게임의 목표는 NN번 칸에 도달하는 것이다. 1번과 NN번을 제외한 각 칸 ii에는 음이 아닌 정수 pip_i가 대응한다. pi=0p_i = 0이면 ii번 칸은 비어 있다. 그렇지 않으면 그 칸에 텔레포트가 설치되어 있어 말을 왼쪽으로 pip_i칸 옮긴다. 1번 칸과 NN번 칸은 비어 있다고 보장된다.

한 번의 차례는 다음 알고리즘으로 진행된다.

  1. 플레이어가 6면체 주사위를 던진다. 주사위 눈이 kk이면 말을 오른쪽으로 kk칸 옮기되, 말은 NN번 칸보다 오른쪽으로 갈 수 없다. 즉 말이 ii번 칸에 있었다면 min⁡(i+k,N)\min(i + k, N)번 칸으로 옮겨진다.
  2. 말이 NN번 칸에 도착하면 플레이어가 이긴다.
  3. 말이 텔레포트가 없는 ii번 칸(pi=0p_i = 0)에 도착하면 4단계로 넘어간다. 그렇지 않으면 말을 pip_i칸 왼쪽, 즉 i−pii - p_i번 칸으로 옮기고 3단계를 반복한다.
  4. 1단계에서 주사위 눈이 6이 나왔다면, 플레이어는 현재 차례를 끝내지 않고 1단계부터 모든 동작을 다시 할 수 있다. 그렇지 않으면 현재 차례가 끝난다.

마고가 바딤에게 이 게임을 이기는 데 필요한 최소 차례 수를 묻는다. 확률이 아주 낮더라도 상관없이 구한다. 바딤이 이 질문에 답하도록 도와라.

입력

첫 줄에 보드 크기 NN이 주어진다 (2≤N≤2⋅1052 \le N \le 2 \cdot 10^5).

둘째 줄에는 보드를 나타내는 N−2N - 2개의 정수 pip_i가 주어진다 (0≤pi<i0 \le p_i < i, 1<i<N1 < i < N).

출력

이기는 데 필요한 최소 차례 수를 한 줄에 출력한다. NN번 칸에 도달할 수 없으면 −1-1을 출력한다.

예제3

  1. 예제 1

    입력
    10
    0 1 1 1 1 1 1 0
    
    예상 출력
    -1
    
  2. 예제 2

    입력
    10
    1 2 1 2 0 1 1 1
    
    예상 출력
    1
    
  3. 예제 3

    입력
    10
    1 1 2 2 0 6 7 8
    
    예상 출력
    2