노트 조각
시간 제한2초메모리 제한1024 MB
1번 정점에서 N번 정점까지 가는 경로를 찾습니다. 쪽지 조각이 있는 모든 정점을 지나고, 최단 거리보다 늦지 않게 도착해야 합니다.
문제
달리기 대회가 열렸다. 이 월드는 부터 까지 번호가 매겨진 정점과 개의 양방향 간선으로 이루어져 있다. 잠시 후 열리는 달리기 대회는 번 정점에서 출발하며, 가장 먼저 번 정점에 도착해 자신의 계정에 로그인한 사람이 우승한다. 여러 명이 동시에 가장 먼저 로그인에 성공하면 그 여러 명이 모두 우승한다.
참가자 lobo_prix는 기억력이 좋지 않아 비밀번호를 노트에 적어 둔다. 사악한 참가자 jhnah917는 lobo_prix를 방해하려고 그 노트를 찢어 노트 조각을 여기저기 숨겨 버렸다. lobo_prix는 비밀번호를 기억하지 못하므로 모든 노트 조각을 모은 뒤 번 정점으로 가야 한다. jhnah917은 번 정점까지 최단 경로로만 이동한다.
노트 조각을 줍는 시간과 로그인하는 시간은 무시할 만하므로 이라고 가정한다. 또한 모든 참가자의 이동 속도는 동일하다. lobo_prix가 우승할 수 있는 경로가 있을까?
입력
첫째 줄에 정점의 개수 , 간선의 개수 이 공백을 사이에 두고 주어진다. ()
다음 개의 줄에는 번째 간선이 잇는 두 정점 와 간선의 길이 가 주어진다. (는 정수)
다음 줄에는 개의 정수 이 주어진다. 번 정점에 노트 조각이 있으면 , 없으면 이다.
같은 정점 쌍을 잇는 간선은 여러 번 주어지지 않는다. 번 정점에서 번 정점으로 갈 수 있는 그래프만 주어진다.
출력
lobo_prix가 우승할 수 있는 경로가 없다면 을 출력한다.
우승할 수 있는 경로가 있다면 첫 줄에 방문하는 정점의 개수를 출력하고, 다음 줄에 방문하는 정점을 방문하는 순서대로 공백으로 구분하여 출력한다.
가능한 경로가 여러 개라면 그중 아무거나 하나를 출력하면 된다.