만드는 중입니다

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

서커스

면접 대비

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

요약
주사위를 굴려 1번 칸에서 N번 칸까지 가는 데 필요한 최소 횟수를 구하고, 뱀과 사다리를 거치는 최적의 주사위 눈 순서를 출력합니다.
난이도

쉬움10점 중 3점

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

문제

주쿠는 보드게임을 그다지 잘하지 못한다. 그래서 다음 게임 모임 전에 혼자 '서커스'를 연습하기로 했다.

'서커스'는 간단한 보드게임이다. 게임판에는 1번부터 NN번까지 번호가 매겨진 NN개의 칸이 있다. 모든 플레이어의 말은 1번 칸에서 출발한다. 자기 차례에 플레이어는 6면체 주사위를 굴리고, 나온 눈(1부터 6까지)만큼 말을 앞으로 옮긴다. 일부 칸에는 뱀이나 사다리가 시작된다. 뱀은 말을 뒤로 보내고, 사다리는 말을 앞으로 보낸다. 말이 뱀이 시작되는 칸에 멈추면, 말을 뱀의 반대쪽 끝으로 옮겨야 한다. 마찬가지로 말이 사다리가 시작되는 칸에 멈추면, 말을 사다리의 반대쪽 끝으로 옮겨야 한다. 말이 NN번 칸에 도달하거나 그보다 멀리 가면 플레이어가 이긴다.

주쿠는 앞으로 얼마나 더 발전할 여지가 있는지 알고 싶어 한다. 그래서 게임에서 이기는 데 필요한 주사위 던지기 횟수의 최솟값을 구하려 한다.

입력

첫 줄에는 칸의 수 NN과 뱀과 사다리의 총 개수 MM이 주어진다(2≤N≤1052 \le N \le 10^5, 0≤M0 \le M). 다음 MM개의 줄에는 각각 뱀 또는 사다리를 나타내는 두 정수 AA와 LL이 주어진다(1<A<N1 < A < N, 1≤L≤N1 \le L \le N, A≠LA \neq L).

  • A<LA < L이면 그 줄은 AA번 칸에서 시작해 LL번 칸으로 이어지는 사다리이다.
  • A>LA > L이면 그 줄은 AA번 칸에서 시작해 LL번 칸으로 이어지는 뱀이다.

모든 줄에서 AA의 값은 서로 다르다. 또한 어떤 LL의 값도 어떤 AA의 값과 같지 않다.

출력

첫 줄에는 게임에서 이기기 위해 필요한 주사위 던지기 횟수의 최솟값을 출력한다. 둘째 줄에는 주사위 결과를 빈칸으로 구분하여 순서대로 출력한다. 가능한 결과 수열이 여러 개이면 그중 아무거나 출력해도 된다. 게임에서 이길 수 없으면 한 줄에 \verb'EI SAA'만 출력한다.

예제3

  1. 예제 1

    입력
    30 0
    
    예상 출력
    5
    5 6 6 6 6
    
  2. 예제 2

    입력
    7 1
    2 7
    
    예상 출력
    1
    1
    
  3. 예제 3

    입력
    31 6
    5 2
    6 2
    7 2
    8 2
    9 2
    10 2
    
    예상 출력
    EI SAA