아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

두 단계 최단 경로 1

시간 제한0.3초메모리 제한512 MB

요약
가중치가 있는 방향 그래프에서 X에서 출발해 Y를 거쳐 Z로 가는 최단 거리와 Y를 거치지 않고 Z로 가는 최단 거리를 각각 구하고, 도달할 수 없으면 -1을 출력한다.
난이도

보통10점 중 5점

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

문제

서준이는 아빠로부터 생일선물로 세계 지도를 받아서 매우 기뻤다. 세계 지도에서 최단 경로를 찾는 프로그램을 개발해서 아빠께 감사의 마음을 전달하려고 한다. 세계 지도는 도시를 정점으로 갖고 도시 간의 도로를 간선으로 갖는 방향성 그래프이며(directed graph), 도로의 길이가 간선의 가중치이다. 도시의 번호는 1부터 N까지이다. 출발 정점 X에서 출발하여 중간 정점 Y를 거쳐서 도착 정점 Z에 도달하는 최단 거리, 출발 정점 X에서 출발하여 중간 정점 Y를 거치지 않고 도착 정점 Z에 도달하는 최단 거리를 각각 구해서 우리 서준이를 도와주자.

입력

첫째 줄에 정점의 수 N (1 ≤ N ≤ 100,000), 간선의 수 M (1 ≤ M ≤ 200,000)이 주어진다.

다음 M개 줄에 간선 정보 u v w가 주어지며 도시 u에서 도시 v로 가중치가 w인 단방향 도로를 나타낸다. (1 ≤ u, v ≤ N, u ≠ v, 1 ≤ w ≤ 10,000, w는 정수) 모든 간선의 (u, v) 쌍의 값은 서로 다르다.

다음 줄에 X Y Z가 주어진다. (1 ≤ X, Y, Z ≤ N, X ≠ Y, X ≠ Z, Y ≠ Z)

출력

첫째 줄에 두 정수를 출력한다. 첫 번째 정수는 정점 X에서 출발해서 정점 Y를 거쳐서 정점 Z에 도달하는 최단 거리를 의미한다. 두 번째 정수는 정점 X에서 출발해서 정점 Y를 거치지 않고 정점 Z에 도달하는 최단 거리를 의미한다.

만약, 정점 Z에 도달할 수 없는 경우 -1을 출력한다.

예제2

  1. 예제 1

    입력
    6 8
    1 2 2
    1 3 3
    1 5 10
    2 4 3
    3 6 5
    4 1 4
    4 6 4
    5 6 1
    1 2 6
    
    예상 출력
    9 8
    
  2. 예제 2

    입력
    6 8
    1 2 2
    1 3 3
    1 5 10
    2 4 3
    3 6 5
    4 1 4
    4 6 4
    5 6 1
    1 2 4
    
    예상 출력
    5 -1