아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

Speedrun

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

요약
각 레벨 i의 비용은 i이고 다음 레벨은 T[i]이다. 이미 지나온 레벨에 다시 도달할 때까지의 총 비용이 최소가 되는 시작 레벨을 찾는다.
난이도

보통10점 중 4점

유형
그래프, DFS
정답자
아직 제출이 없습니다

문제

Bajtosia ma w końcu chwilę wolnego i chce pograć w grę komputerową. Gra składa się z N poziomów ponumerowanych od 1 do N. Recenzenci bardzo chwalą nieliniową fabułę gry. Gracz może zacząć grę na dowolnym, wybranym przez siebie poziomie (od 1 do N). Dodatkowo, dla każdego poziomu i ustalony jest poziom Ti , który po nim następuje. Gracz wygrywa w momencie, kiedy trafia do już ukończonego poziomu. Autorzy gry nie chcieli przecież, aby gra była nudna i powtarzalna. Zauważ, że przy takich warunkach nie jest konieczne ukończenie wszystkich poziomów do wygrania gry. Gracz w ten sposób nie będzie się nudził przy kolejnej przygodzie.

Bajtosia pasjonuje się speedrunningiem – aktywnością, która polega na jak najszybszym przechodzeniu gier. Bajtosia jest w stanie przejść każdy poziom gry. Pokonanie poziomu numer i zajmuje jej dokładnie i minut. Dalej jednak nie wie jak najszybciej może wygrać.

Pomóż jej i napisz program, który wczyta opis gry, wyliczy minimalną liczbę minut potrzebną na wygranie i wypisze wynik na standardowe wyjście.

입력

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N (1 ≤ N ≤ 100 000), określająca liczbę poziomów gry. W drugim (ostatnim) wierszu wejścia znajduje się opis tych poziomów: N liczb całkowitych Ti (1 ≤ Ti ≤ N), pooddzielanych pojedynczymi odstępami: i-ta liczba określa, że po przejściu poziomu i trafia się do poziomu Ti.

출력

W pierwszym (jedynym) wierszu wyjścia należy wypisać jedną liczbę całkowitą – minimalną liczbę minut, które potrzebuje Bajtosia aby wygrać.

예제3

  1. 예제 1

    입력
    10
    4 1 1 3 4 1 6 9 10 10
    
    예상 출력
    8
    
  2. 예제 2

    입력
    6
    2 3 1 4 6 5
    
    예상 출력
    4
    
  3. 예제 3

    입력
    7
    5 4 1 2 3 7 6
    
    예상 출력
    6