만드는 중입니다

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

마라톤

시간 제한2초메모리 제한1024 MB

요약
체크포인트 1에서 N까지 정확히 j개의 체크포인트를 지나는 최단 경로 길이를 j=1부터 K까지 구하고, 그 합을 998244353으로 나눈 나머지를 구합니다.
난이도

어려움10점 중 8점

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

문제

KK명의 KSA 학생들이 벌점 누적에 대한 벌칙으로 마라톤을 하러 왔다. 마라톤 경기장은 NN개의 체크포인트와, 서로 다른 두 체크포인트를 양방향으로 연결하는 MM개의 길로 이루어져 있다. ii번 길은 A_iA\_i번 체크포인트와 B_iB\_i번 체크포인트를 연결하며, 이 길을 지나는 데 C_iC\_i의 시간이 걸린다. 임의의 체크포인트에서 다른 체크포인트로 가는 경로는 항상 존재한다.

학생들은 11번 체크포인트에서 출발해 NN번 체크포인트에서 마라톤을 끝내야 한다. jj번 학생의 벌점은 처음에 jj점이고, 체크포인트를 한 번 지날 때마다 1점씩 감점된다. 출발점인 11번 체크포인트와 도착점인 NN번 체크포인트에서도 감점된다. 같은 체크포인트를 여러 번 지나도 된다. 단, 길 중간에서 되돌아올 수는 없다.

벌점이 0점이 된 이후에는 체크포인트를 지나면 안 되며, 마라톤이 끝났을 때 벌점이 정확히 0점이어야 한다. 빨리 쉬고 싶은 학생들을 위해 각 학생이 마라톤을 끝내는 데 걸리는 최소 시간을 구해보자.

입력

첫 번째 줄에 세 정수 NN, MM, KK가 공백으로 구분되어 주어진다.

i+1i+1번째 줄에 세 정수 A_iA\_i, B_iB\_i, C_iC\_i가 공백으로 구분되어 주어진다. (1≤i≤M)(1 \leq i \leq M)

출력

ii번 학생이 마라톤을 끝내기 위한 최소 시간을 D_iD\_i라고 할 때, D_1+D_2+⋯+D_KD\_1 + D\_2 + \cdots + D\_K를 998244353998244353으로 나눈 나머지를 출력한다.

단, ii번 학생이 마라톤을 끝낼 방법이 없으면 D_i=0D\_i=0이다.

제한

  • 2≤N≤15002 \leq N \leq 1500
  • N−1≤M≤3000N-1 \leq M \leq 3000
  • 1≤K≤1091 \leq K \leq 10^9
  • 1≤A_i<B_i≤N1 \leq A\_i < B\_i \leq N (1≤i≤M1 \leq i \leq M)
  • 1≤C_i≤1091 \leq C\_i \leq 10^9 (1≤i≤M1 \leq i \leq M)
  • (A_i,B_i)≠(A_j,B_j)(A\_i, B\_i) \neq (A\_j, B\_j) (1≤i<j≤M)(1 \leq i < j \leq M)
  • 1≤i<j≤N1 \leq i < j \leq N을 만족하는 모든 ii, jj마다 ii번 체크포인트와 jj번 체크포인트를 잇는 경로가 존재한다.

예제3

  1. 예제 1

    입력
    2 1 7
    1 2 10
    
    예상 출력
    90
    
  2. 예제 2

    입력
    5 5 5
    1 2 1
    2 3 4
    3 5 3
    1 4 2
    4 5 3
    
    예상 출력
    20
    
  3. 예제 3

    입력
    6 9 20
    1 2 1
    1 3 1
    2 3 2
    2 4 2
    3 4 3
    2 6 1
    4 5 2
    4 6 3
    5 6 1
    
    예상 출력
    198