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

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

소의 조깅

면접 대비

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

요약
번호가 큰 쪽에서 작은 쪽으로만 향하는 간선을 가진 DAG에서 N번 노드부터 1번 노드까지의 K개의 최단 경로 길이를 중복을 포함해 구한다.
난이도

보통10점 중 7점

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

문제

Bessie는 게으름의 해악을 깨닫고, 건강을 위해 일주일에 여러 번 헛간에서 연못까지 조깅하기로 했다. 너무 힘들지 않도록 연못까지는 내리막으로만 뛰어 내려가고, 헛간으로는 천천히 걸어서 돌아온다.

목초지는 11번부터 NN번까지 번호가 매겨져 있다 (1≤N≤1,0001 \le N \le 1{,}000). X>YX > Y이면 목초지 XX에서 목초지 YY로 가는 소 길은 내리막이다. 목초지 NN은 언덕 꼭대기의 헛간이고, 목초지 11은 언덕 아래의 연못이다.

Bessie는 매번 같은 길로만 가는 것이 지겨워 다양한 길로 뛰고 싶어한다. 구체적으로, 헛간에서 연못까지 가는 경로 중 가장 짧은 KK개의 경로 길이를 알고 싶다 (1≤K≤1001 \le K \le 100). 두 경로는 지나는 소 길의 나열이 다르면 서로 다른 경로로 본다.

MM개의 내리막 소 길이 주어진다 (1≤M≤10,0001 \le M \le 10{,}000). 소 길 ii는 목초지 XiX_i에서 YiY_i로 이어지며 (1≤Yi<Xi≤N1 \le Y_i < X_i \le N), 길이는 DiD_i이다 (1≤Di≤1,000,0001 \le D_i \le 1{,}000{,}000).

입력

  • 첫째 줄: 세 정수 NN, MM, KK가 공백으로 구분되어 주어진다.
  • 둘째 줄부터 M+1M+1째 줄까지: 각 줄에 내리막 소 길을 나타내는 세 정수 XiX_i, YiY_i, DiD_i가 공백으로 구분되어 주어진다.

출력

  • KK개의 줄을 출력한다. ii째 줄에는 ii번째로 짧은 경로의 길이를 출력하고, 그런 경로가 없으면 −1-1을 출력한다. 같은 길이의 최단 경로가 여러 개 있으면 그 개수만큼 반복해서 출력한다.

힌트

N=5N = 5인 그래프에서 헛간(목초지 55)에서 연못(목초지 11)까지의 경로는 5→15 \to 1, 5→3→15 \to 3 \to 1, 5→2→15 \to 2 \to 1, 5→3→2→15 \to 3 \to 2 \to 1, 5→4→3→15 \to 4 \to 3 \to 1, 5→4→3→2→15 \to 4 \to 3 \to 2 \to 1의 여섯 가지이며, 길이는 각각 1,2,2,3,6,71, 2, 2, 3, 6, 7이다.

예제2

  1. 예제 1

    입력
    5 8 7
    5 4 1
    5 3 1
    5 2 1
    5 1 1
    4 3 4
    3 1 1
    3 2 1
    2 1 1
    
    예상 출력
    1
    2
    2
    3
    6
    7
    -1
    
  2. 예제 2

    입력
    2 1 1
    2 1 5
    
    예상 출력
    5