만드는 중입니다

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

우회 노선

시간 제한2초메모리 제한512 MB

요약
노드 1로 가는 최단 경로가 유일한 그래프에서 각 교차로의 표지판은 최단 경로 방향을 가리킨다. 표지판이 가리키는 도로를 절대 택하지 않으면서 0에서 1로 가는 단순 경로 중 가장 짧고 사전순으로 가장 작은 경로를 찾는다.
난이도

보통10점 중 7점

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

문제

델프트에서 암스테르담까지 버스로 이동한다. 가는 길의 모든 교차로에는 암스테르담까지 가는 최단 경로 방향을 가리키는 표지판이 서 있다. 그런데 이 버스는 표지판이 가리키는 도로로 한 번도 들어가지 않는다.

이런 버스 노선이 존재하는지 판정하라. 버스 노선은 델프트에서 출발해 암스테르담에서 끝나고, 같은 교차로를 두 번 지나지 않는다. 노선 위의 교차로 가운데 암스테르담을 뺀 모든 교차로에서, 버스가 이어서 지나는 도로는 그 교차로의 표지판이 가리키는 도로와 달라야 한다.

도로망은 단순하고 연결된 무방향 그래프이고, 모든 교차로에서 암스테르담까지 가는 최단 경로는 유일하다. 교차로의 표지판은 그 최단 경로의 첫 번째 도로를 가리킨다.

입력

첫 줄에 교차로의 수 nn (2≤n≤1052 \le n \le 10^5)과 도로의 수 mm (1≤m≤1061 \le m \le 10^6)이 공백으로 구분되어 주어진다. 교차로 번호는 00부터 n−1n-1까지이며, 델프트가 00번, 암스테르담이 11번이다.

다음 mm개 줄에 도로가 한 줄에 하나씩 세 정수 aia_i, bib_i (0≤ai,bi<n0 \le a_i, b_i < n, ai≠bia_i \ne b_i), did_i (0≤di≤5000000 \le d_i \le 500000)로 주어진다. 교차로 aia_i와 교차로 bib_i를 잇는 도로이고, 어느 방향으로 지나든 길이는 did_i다.

출력

조건을 만족하는 노선이 없으면 impossible을 출력한다.

있으면 노선을 한 줄에 출력한다. 먼저 노선이 지나는 교차로의 수 kk를 출력하고, 이어서 버스가 지나는 순서대로 교차로 번호 p0,…,pk−1p_0, \dots, p_{k-1}을 출력한다. 여기서 p0=0p_0 = 0이고 pk−1=1p_{k-1} = 1이다.

조건을 만족하는 노선이 여러 개일 수 있다. 그중 지나는 교차로의 수가 가장 적은 노선을 출력한다. 그런 노선이 여러 개면 수열 p0,…,pk−1p_0, \dots, p_{k-1}이 사전순으로 가장 앞서는 노선을 출력한다.

예제3

  1. 예제 1

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

    입력
    4 3
    0 1 10
    1 2 20
    2 3 30
    
    예상 출력
    impossible
    
  3. 예제 3

    입력
    7 9
    0 1 800
    6 2 300
    2 3 75
    3 4 80
    4 5 50
    4 1 100
    1 6 35
    0 2 120
    0 3 100
    
    예상 출력
    2 0 1