만드는 중입니다

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

타임머신

시간 제한1초메모리 제한256 MB

요약
출발 도시 1에서 각 도시까지 음수 시간이 있는 버스 노선으로 가장 빠른 시각을 구하고 도달 가능한 음수 사이클이 있으면 -1을 출력합니다.
난이도

보통10점 중 4점

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

문제

도시가 NN개 있다. 한 도시에서 출발해 다른 도시에 도착하는 버스 노선은 MM개다. 각 노선은 세 정수 AA, BB, CC로 나타낸다. AA는 출발 도시, BB는 도착 도시, CC는 그 버스를 타고 이동하는 데 걸리는 시간이다.

CC가 양수가 아닌 경우도 있다. C=0C = 0이면 순간 이동이고, C<0C < 0이면 타임머신을 타고 시간을 되돌아간다.

1번 도시에서 출발해 나머지 도시로 가는 가장 빠른 시간을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 도시의 개수 NN (1≤N≤5001 \le N \le 500)과 버스 노선의 개수 MM (1≤M≤60001 \le M \le 6000)이 주어진다.

둘째 줄부터 MM개 줄에 걸쳐 노선 정보 AA, BB, CC (1≤A,B≤N1 \le A, B \le N, −10000≤C≤10000-10000 \le C \le 10000)가 주어진다. 같은 두 도시를 잇는 노선이 여러 개일 수도 있고, A=BA = B인 노선이 있을 수도 있다.

출력

1번 도시에서 출발해 어떤 도시로 가는 도중에 시간을 무한히 오래 전으로 되돌릴 수 있다면 첫째 줄에 -1을 출력한다.

그렇지 않다면 N−1N - 1개 줄에 걸쳐 1번 도시에서 2번 도시, 3번 도시, ..., NN번 도시로 가는 가장 빠른 시간을 순서대로 한 줄에 하나씩 출력한다. 그 도시로 가는 경로가 없다면 그 줄에는 -1을 출력한다. N=1N = 1이면 아무것도 출력하지 않는다.

예제3

  1. 예제 1

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

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

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