타임라인

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

요약
N개 세션 날짜의 하한과 한 세션이 다른 세션보다 최소 x일 뒤라는 제약 C개가 주어질 때, 각 세션이 가질 수 있는 가장 이른 날짜를 구한다.
난이도

보통10점 중 7점

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

문제

Bessie는 지난 MM일(2≤M≤1092 \le M \le 10^9) 동안 NN번의 착유 세션(1≤N≤1051\le N\le 10^5)에 참여했다. 그런데 각 세션이 언제였는지 기억하지 못하고 있다.

각 세션 i=1…Ni = 1 \ldots N에 대해, 그 세션이 S_iS\_i일(1≤S_i≤M1\le S\_i\le M)보다 이르지 않게 일어났다는 것은 알고 있다. 또한 Bessie에게는 CC개의 기억(1≤C≤1051\le C\le 10^5)이 있는데, 각 기억은 세 쌍 (a,b,x)(a,b,x)로 주어지며 세션 bb가 aa보다 적어도 xx일 뒤에 일어났다는 것이다.

각 착유 세션이 일어날 수 있는 가장 이른 날짜를 구해 Bessie를 도와주자. Bessie가 잘못 기억한 경우는 없음이 보장된다. 즉, 1…M1\ldots M 범위의 날짜에 세션을 배정하여 기억에 따른 모든 제약을 만족하는 방법이 존재한다.

입력

첫째 줄에 NN, MM, CC가 주어진다.

다음 줄에 NN개의 정수 S_1,S_2,…,S_NS\_1,S\_2,\ldots, S\_N이 공백으로 구분되어 주어진다. 각 값은 1…M1 \ldots M 범위이다.

다음 CC개의 줄에 세 정수 aa, bb, xx가 주어지며, 이는 세션 bb가 aa보다 적어도 xx일 뒤에 일어났다는 뜻이다. 각 줄에서 a≠ba \neq b이고, aa와 bb는 1…N1 \ldots N 범위이며, xx는 1…M1 \ldots M 범위이다.

출력

각 세션이 일어날 수 있는 가장 이른 날짜를 NN개의 줄에 출력한다.

힌트

세션 2는 세션 1보다 적어도 5일 뒤에 일어났으므로 1+5=61+5=6일보다 이르게 일어날 수 없다. 세션 4는 세션 2보다 적어도 2일 뒤에 일어났으므로 6+2=86+2=8일보다 이르게 일어날 수 없다.

예제1

  1. 예제 1

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