만드는 중입니다

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

렉시코폴리스

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

요약
간선 번호가 아니라 간선의 마법 수를 기준으로, 정확히 k개의 간선으로 이루어진 s에서 t까지의 사전순 최소 경로를 찾습니다. 그 경로의 값을 x를 밑으로 하는 다항식으로 계산해 10^9+7로 나눈 나머지를 출력합니다.
난이도

어려움10점 중 8점

유형
그래프, 동적 계획법, 문자열
정답자
아직 제출이 없습니다

문제

렉시코폴리스는 고대 전설과 보물로 알려진 도시이다. 이 도시는 복잡하게 얽힌 단방향 도로망으로 유명하다. 교차로는 nn개이고 단방향 도로는 mm개이다. 도로 ii는 교차로 uiu_i에서 viv_i로만 이동할 수 있게 하며, 마법의 수 wiw_i가 붙어 있다.

ss에서 tt까지 길이가 kk인 경로는 도로의 나열 e1,e2,…,eke_1, e_2, \dots, e_k이며, 이 순서대로 따라가면 ss에서 tt에 이를 수 있다. 두 경로를 비교할 때는 마법의 수가 처음으로 달라지는 위치를 본다. 그 위치에서 수가 작은 쪽이 사전순으로 더 작은 경로이다. 도로 번호가 아니라 마법의 수로 비교한다.

ss에서 tt까지 길이가 kk인 경로 중 사전순으로 가장 작은 경로를 찾은 여행자는 정부에서 선물을 받는다는 소문이 있다. 이 경로를 찾는 프로그램을 작성하시오.

입력

첫 줄에 여섯 정수 nn, mm, ss, tt, xx, kk가 주어진다. nn은 교차로의 수, mm은 도로의 수, ss는 시작 교차로, tt는 도착 교차로, xx는 답을 계산할 때 쓰는 수, kk는 경로의 길이이다. 이어지는 mm개의 줄에는 정수 uiu_i, viv_i, wiw_i가 주어진다. 도로 ii가 uiu_i에서 viv_i로 향하며 마법의 수가 wiw_i라는 뜻이다.

출력

ss에서 tt까지 길이가 kk인 경로가 없으면 -1을 출력한다. 경로가 있으면 사전순으로 가장 작은 경로 e1,e2,…,eke_1, e_2, \dots, e_k를 골라 ∑i=1kweixk−i\sum_{i=1}^{k} w_{e_i} x^{k-i}의 값을 109+710^9+7로 나눈 나머지를 출력한다.

제한

  • 2≤n≤502 \le n \le 50
  • 1≤m≤n2−n1 \le m \le n^2 - n
  • 1≤ui,vi≤n1 \le u_i, v_i \le n이고 ui≠viu_i \ne v_i이다.
  • 1≤wi≤1091 \le w_i \le 10^9
  • 순서쌍 (ui,vi)(u_i, v_i)는 서로 겹치지 않는다.
  • 1≤s,t≤n1 \le s, t \le n
  • 1≤k≤1091 \le k \le 10^9
  • 1≤x≤1091 \le x \le 10^9

예제4

  1. 예제 1

    입력
    3 6 1 3 10 4
    1 2 2
    2 1 1
    1 3 1
    3 1 2
    2 3 1
    3 2 2
    
    예상 출력
    1211
    
  2. 예제 2

    입력
    3 6 1 3 10 5
    1 2 2
    2 1 1
    1 3 1
    3 1 2
    2 3 1
    3 2 2
    
    예상 출력
    12121
    
  3. 예제 3

    입력
    6 7 5 6 10 10
    1 2 1
    2 4 2
    3 4 1
    4 5 3
    5 3 5
    4 6 2
    6 5 1
    
    예상 출력
    121513477
    
  4. 예제 4

    입력
    6 7 1 6 123 2
    1 2 1000000000
    2 4 2
    3 4 3
    4 5 4
    5 3 1
    4 6 2
    6 5 1
    
    예상 출력
    -1