시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 1024 MB 113 59 53 53.000%

문제

2019년에 연세대학교 최적화 연구실에서는 갑자기 특정 문제에 Parity Constraint(홀짝 제약)을 넣은 상태로 문제를 푸는 것이 유행한 적이 있었고, 졸업하신 김강산 선배도 Parity Constraint 관련 논문을 작성하셨다. 이를 기념하기 위해서 국렬이는 연세대학교 프로그래밍 경진대회에 Parity Constraint 문제를 내기로 하였다.

정점이 N개, 비용이 있는 무방향 간선이 M개 있는 그래프가 주어진다. 모든 정점에는 1부터 N까지 번호가 매겨져 있다. 임의의 정점을 선택했을 때 다른 정점으로 가는 경로는 항상 존재하며, 서로 다른 두 정점 사이에는 최대 한 개의 간선이 존재한다.

정점 1에서 출발해서 다른 정점으로 이동하려고 한다. 이미 지나갔던 정점이나 간선도 다시 지나갈 수 있으며, 지나갈 때마다 비용이 추가된다. 경로를 구성하는 간선의 비용의 합을 편의상 '경로의 비용'이라 정의하자. 경로의 비용이 홀수면 홀수 경로, 짝수면 짝수 경로라고 부르자. 각 정점으로 이동할 때 비용이 최소가 되는 홀수 경로의 비용과 짝수 경로의 비용을 구하려고 한다.

입력

다음과 같이 입력이 주어진다.

N M
u1 v1 w1
. . .
uM vM wM

출력

첫째 줄부터 N개의 줄에 걸쳐, i번째 줄에 1번 정점에서 i번 정점으로 이동하는 최소의 홀수 경로의 비용과, 최소의 짝수 경로의 비용을 공백으로 구분하여 출력한다. 해당 경로가 존재하지 않는 경우 -1을 출력한다.

제한

  • 2 ≤ N ≤ 100,000.
  • 1 ≤ M ≤ 300,000.
  • 1 ≤ uivi ≤ Nui ≠ vi. uivii번째 간선의 양 끝점을 의미한다.
  • 1 ≤ wi ≤ 1,000,000,000. wi는 i번째 간선의 비용을 의미한다.
  • 입력에 주어진 수들은 전부 정수다.

예제 입력 1

2 1
1 2 1

예제 출력 1

-1 0
1 -1

예제 입력 2

3 2
1 2 3
2 3 3

예제 출력 2

-1 0
3 -1
-1 6

예제 입력 3

3 3
1 2 3
2 3 3
3 1 3

예제 출력 3

9 0
3 6
3 6

예제 입력 4

11 23
10 5 832262475
4 10 301084042
4 1 799372953
4 8 689519369
5 2 873313484
6 4 46186948
8 9 388003582
2 7 422044725
5 3 299817881
11 8 779478862
11 5 416526224
11 6 125285000
1 3 566784345
10 6 126434276
11 2 546492450
5 9 914379895
3 7 540663871
7 8 737058872
6 8 932017467
1 9 788517162
11 3 96034563
8 1 113947346
2 10 117057067

예제 출력 4

1633663809 0
1031595251 1089051244
566784345 1066879464
799372953 834290856
1366697345 866602226
845559901 788103908
1511095969 851006218
1523810225 113947346
1780982121 501950928
971994177 914538184
970844901 662818908