만드는 중입니다

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

다채로운 경로

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

요약
1번 도시에서 n번 도시까지 도로 수가 가장 적은 경로 중, 도로 색상값의 최댓값과 최솟값 차이가 가장 큰 경로를 찾습니다.
난이도

보통10점 중 7점

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

문제

칼레이도스탄에는 도시가 nn개 있고, 이 도시들은 양방향 도로 mm개로 연결되어 있다. 도시는 1번부터 nn번까지 번호가 매겨져 있다. 각 도로에는 색상 값이라는 정수가 하나씩 있다.

케이누는 도시 1에서 도시 nn까지 이동하려고 한다. 그는 최단 경로, 즉 도로 수가 가장 적은 경로를 택하려고 한다. 최단 경로가 여러 개라면, 그중에서 경로에 있는 도로들의 색상 값 최댓값과 최솟값의 차이가 가장 큰 다채로운 경로를 택하려고 한다. 케이누가 그런 경로를 찾도록 도와라.

입력

첫 줄에는 도시 수와 도로 수를 뜻하는 두 정수 nn, mm이 주어진다 (2≤n≤1052 \le n \le 10^5; 1≤m≤2⋅1051 \le m \le 2 \cdot 10^5).

다음 mm개 줄의 ii번째 줄에는 ii번째 도로가 잇는 두 도시의 번호 viv_i, uiu_i와 그 도로의 색상 값 cic_i가 주어진다 (1≤vi,ui≤n1 \le v_i, u_i \le n; vi≠uiv_i \neq u_i; 0≤ci≤1090 \le c_i \le 10^9).

같은 두 도시를 잇는 도로는 최대 하나다. 어느 도시에서든 도로를 따라 다른 모든 도시로 이동할 수 있다는 것이 보장된다.

출력

첫 줄에 필요한 경로의 도로 수 kk를 한 정수로 출력한다.

둘째 줄에는 경로 위의 도시 번호 c0,c1,…,ckc_0, c_1, \ldots, c_k를 k+1k+1개의 정수로 출력한다 (1≤ci≤n1 \le c_i \le n; c0=1c_0 = 1; ck=nc_k = n).

힌트

예시 테스트에서 필요한 경로는 도로 3개로 이루어지며, 이 도로들의 색상 값 최댓값과 최솟값의 차이는 8−2=68-2=6이다.

예제1

  1. 예제 1

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