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

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

진미 여행

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

요약
1번 도시에서 출발해 정확히 T일에 1번 도시로 돌아오는 여행에서 도시 방문 행복도와 축제 보너스의 최댓값을 구합니다. 돌아올 수 없으면 -1을 출력합니다.
난이도

어려움10점 중 8점

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

문제

도시는 1번부터 nn번까지 번호가 매겨진 nn개가 있다. ii번 도시의 음식은 cic_i만큼의 행복도를 준다. 도시들은 1번부터 mm번까지 번호가 매겨진 mm개의 단방향 도로로 연결되어 있다. ii번 도로는 도시 uiu_i에서 출발해 도시 viv_i에서 끝나며, 이 도로를 지나는 데 wiw_i일이 걸린다. dd일에 도로 ii를 타고 도시 uiu_i를 떠나면, d+wid + w_i일에 도시 viv_i에 도착한다. W는 TT일 동안의 여행을 계획한다. 그는 0일에 도시 1을 떠나 TT일 동안 이동하고, 정확히 TT일에 도시 1로 돌아와 여행을 마친다. W는 미식가다. 도시에 도착할 때마다, 0일의 도시 1과 TT일의 도시 1을 포함해, 그곳의 음식을 맛보고 그 도시의 행복도를 얻는다. 같은 도시를 여러 번 방문하면 방문할 때마다 행복도를 얻는다. W는 도시에서 중간에 머물 수 없다. 여행이 끝나기 전에 도시에 도착했다면, 그날 바로 떠나야 한다. 음식 축제가 KK개 있으며, 각 축제는 서로 다른 시각에 열린다. ii번째 축제는 tit_i일에 도시 xix_i에서 열린다. W가 tit_i일에 도시 xix_i에 있으면 추가로 yiy_i만큼의 행복도를 얻는다. W가 여행에서 얻을 수 있는 행복도의 최댓값을 구하라.

입력

첫 줄에는 네 정수 nn, mm, TT, KK가 주어진다. 각각 도시 수, 도로 수, 여행 기간, 음식 축제 수이다. 둘째 줄에는 nn개의 정수 c1,…,cnc_1, \ldots, c_n이 주어진다. 다음 mm개 줄에는 각각 uiu_i, viv_i, wiw_i가 주어진다. 마지막 KK개 줄에는 각각 tit_i, xix_i, yiy_i가 주어진다. 데이터는 모든 도로에 대해 ui≠viu_i \ne v_i임을 보장한다. 같은 방향의 평행 도로가 있을 수 있다. 모든 도시에는 출발하는 도로가 적어도 하나 있다. 축제 시각 tit_i는 모두 다르다.

출력

W가 얻을 수 있는 행복도의 최댓값을 정수 하나로 출력한다. W가 TT일에 도시 1로 돌아올 수 없다면 -1을 출력한다.

제한

모든 테스트 케이스에 대해 1≤n≤501 \le n \le 50, n≤m≤501n \le m \le 501, 0≤K≤2000 \le K \le 200, 1≤ti≤T≤1091 \le t_i \le T \le 10^9, 1≤wi≤51 \le w_i \le 5, 1≤ci≤525011 \le c_i \le 52501, 1≤ui,vi,xi≤n1 \le u_i, v_i, x_i \le n, 1≤yi≤1091 \le y_i \le 10^9이다.

예제2

  1. 예제 1

    입력
    3 4 11 0
    1 3 4
    1 2 1
    2 1 3
    2 3 2
    3 1 4
    
    예상 출력
    13
    
  2. 예제 2

    입력
    4 8 16 3
    3 1 2 4
    1 2 1
    1 3 1
    1 3 2
    3 4 3
    2 3 2
    3 2 1
    4 2 1
    4 1 5
    3 3 5
    1 2 5
    5 4 20
    
    예상 출력
    39