출발 도시 1에서 각 도시까지 음수 시간이 있는 버스 노선으로 가장 빠른 시각을 구하고 도달 가능한 음수 사이클이 있으면 -1을 출력합니다.
도시가 NNN개 있다. 한 도시에서 출발해 다른 도시에 도착하는 버스 노선은 MMM개다. 각 노선은 세 정수 AAA, BBB, CCC로 나타낸다. AAA는 출발 도시, BBB는 도착 도시, CCC는 그 버스를 타고 이동하는 데 걸리는 시간이다.
CCC가 양수가 아닌 경우도 있다. C=0C = 0C=0이면 순간 이동이고, C<0C < 0C<0이면 타임머신을 타고 시간을 되돌아간다.
1번 도시에서 출발해 나머지 도시로 가는 가장 빠른 시간을 구하는 프로그램을 작성하시오.
첫째 줄에 도시의 개수 NNN (1≤N≤5001 \le N \le 5001≤N≤500)과 버스 노선의 개수 MMM (1≤M≤60001 \le M \le 60001≤M≤6000)이 주어진다.
둘째 줄부터 MMM개 줄에 걸쳐 노선 정보 AAA, BBB, CCC (1≤A,B≤N1 \le A, B \le N1≤A,B≤N, −10000≤C≤10000-10000 \le C \le 10000−10000≤C≤10000)가 주어진다. 같은 두 도시를 잇는 노선이 여러 개일 수도 있고, A=BA = BA=B인 노선이 있을 수도 있다.
1번 도시에서 출발해 어떤 도시로 가는 도중에 시간을 무한히 오래 전으로 되돌릴 수 있다면 첫째 줄에 -1을 출력한다.
그렇지 않다면 N−1N - 1N−1개 줄에 걸쳐 1번 도시에서 2번 도시, 3번 도시, ..., NNN번 도시로 가는 가장 빠른 시간을 순서대로 한 줄에 하나씩 출력한다. 그 도시로 가는 경로가 없다면 그 줄에는 -1을 출력한다. N=1N = 1N=1이면 아무것도 출력하지 않는다.