만드는 중입니다

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

노트 조각

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

요약
1번 정점에서 N번 정점까지 가는 경로를 찾습니다. 쪽지 조각이 있는 모든 정점을 지나고, 최단 거리보다 늦지 않게 도착해야 합니다.
난이도

보통10점 중 7점

유형
최단 경로, 그래프, 동적 계획법
정답자
아직 제출이 없습니다

문제

달리기 대회가 열렸다. 이 월드는 11부터 NN까지 번호가 매겨진 정점과 MM개의 양방향 간선으로 이루어져 있다. 잠시 후 열리는 달리기 대회는 11번 정점에서 출발하며, 가장 먼저 NN번 정점에 도착해 자신의 계정에 로그인한 사람이 우승한다. 여러 명이 동시에 가장 먼저 로그인에 성공하면 그 여러 명이 모두 우승한다.

참가자 lobo_prix는 기억력이 좋지 않아 비밀번호를 노트에 적어 둔다. 사악한 참가자 jhnah917는 lobo_prix를 방해하려고 그 노트를 찢어 노트 조각을 여기저기 숨겨 버렸다. lobo_prix는 비밀번호를 기억하지 못하므로 모든 노트 조각을 모은 뒤 NN번 정점으로 가야 한다. jhnah917은 NN번 정점까지 최단 경로로만 이동한다.

노트 조각을 줍는 시간과 로그인하는 시간은 무시할 만하므로 00이라고 가정한다. 또한 모든 참가자의 이동 속도는 동일하다. lobo_prix가 우승할 수 있는 경로가 있을까?

입력

첫째 줄에 정점의 개수 NN, 간선의 개수 MM이 공백을 사이에 두고 주어진다. (2≤N≤200 000, N−1≤M≤200 0002\leq N \leq 200\,000,\ N-1 \leq M \leq 200\,000)

다음 MM개의 줄에는 ii번째 간선이 잇는 두 정점 u_i,v_iu\_i, v\_i와 간선의 길이 w_iw\_i가 주어진다. (1≤u_i,v_i≤N, 1≤w_i≤109, u_i≠v_i, w_i1\leq u\_i,v\_i\leq N,\ 1 \leq w\_i \leq 10^9,\ u\_i \neq v\_i,\ w\_i는 정수)

다음 줄에는 NN개의 정수 A_1,A_2,⋯ ,A_NA\_1, A\_2, \cdots, A\_N이 주어진다. ii번 정점에 노트 조각이 있으면 A_i=1A\_i=1, 없으면 A_i=0A\_i=0이다.

같은 정점 쌍을 잇는 간선은 여러 번 주어지지 않는다. 11번 정점에서 NN번 정점으로 갈 수 있는 그래프만 주어진다.

출력

lobo_prix가 우승할 수 있는 경로가 없다면 −1-1을 출력한다.

우승할 수 있는 경로가 있다면 첫 줄에 방문하는 정점의 개수를 출력하고, 다음 줄에 방문하는 정점을 방문하는 순서대로 공백으로 구분하여 출력한다.

가능한 경로가 여러 개라면 그중 아무거나 하나를 출력하면 된다.

예제3

  1. 예제 1

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

    입력
    4 4
    1 2 2
    2 4 1
    1 3 1
    3 4 1
    1 1 0 1
    
    예상 출력
    -1
    
  3. 예제 3

    입력
    4 4
    1 2 1
    2 4 1
    1 3 1
    3 4 1
    1 1 1 1
    
    예상 출력
    -1