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

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

자카르타의 마천루

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

요약
0번 도지는 자신의 보폭으로 건물을 이동하거나 같은 건물에 있는 도지에게 소식을 전하며 1번 도지에게 도달하는 최소 점프 횟수를 구합니다.
난이도

어려움10점 중 8점

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

문제

자카르타에는 큰 빌딩 NN개가 일직선 위에 서 있다. 왼쪽부터 0,1,…,N−10, 1, \dots, N-1번이다. 이 도시에 다른 큰 빌딩은 없다.

이 도시에는 도게라고 부르는 신비한 생명체 MM마리가 산다. 도게에는 0,1,…,M−10, 1, \dots, M-1번이 붙어 있다. 도게 ii는 처음에 빌딩 BiB_i에 있고, 신비한 힘의 능력치는 양의 정수 PiP_i다. 능력치가 pp인 도게가 빌딩 bb에 있으면 한 번의 점프로 빌딩 b+pb+p나 빌딩 b−pb-p로 옮겨 갈 수 있다. 단, 도착하는 빌딩 번호가 00 이상 NN 미만이어야 한다.

도게 0은 모든 도게의 지도자다. 급한 소식이 생겨 이 소식을 도게 1에게 최대한 빨리 전하려고 한다. 소식을 들은 도게는 다음 두 가지 중 하나를 할 수 있다.

  • 자신의 힘으로 다른 빌딩으로 점프한다.
  • 지금 있는 빌딩에 함께 있는 다른 도게에게 소식을 전한다.

소식을 도게 1에게 전하는 데 필요한 최소 점프 횟수를 구하는 프로그램을 작성하시오. 전할 방법이 없으면 그 사실도 알아내야 한다.

입력

첫째 줄에 정수 NN과 MM이 주어진다. 다음 MM개 줄에는 ii번째 줄마다 두 정수 BiB_i와 PiP_i가 주어진다.

  • 1≤N≤300001 \le N \le 30000
  • 2≤M≤300002 \le M \le 30000
  • 0≤Bi<N0 \le B_i < N
  • 1≤Pi≤300001 \le P_i \le 30000

출력

첫째 줄에 최소 점프 횟수를 출력한다. 소식을 전할 수 없으면 −1-1을 출력한다.

힌트

빌딩이 5개이고 도게가 3마리인 경우를 보자. 도게 0은 빌딩 0에 있고 능력치가 2, 도게 1은 빌딩 1에 있고 능력치가 1, 도게 2는 빌딩 4에 있고 능력치가 1이다. 다음 순서를 따르면 점프 5번으로 소식을 전할 수 있다.

  • 도게 0이 빌딩 2로 점프하고, 다시 빌딩 4로 점프한다. (점프 2번)
  • 도게 0이 빌딩 4에 있는 도게 2에게 소식을 전한다.
  • 도게 2가 빌딩 3, 빌딩 2, 빌딩 1로 차례로 점프한다. (점프 3번)
  • 도게 2가 빌딩 1에 있는 도게 1에게 소식을 전한다.

예제1

  1. 예제 1

    입력
    5 3
    0 2
    1 1
    4 1
    
    예상 출력
    5