만드는 중입니다

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

익스프레스 20/19

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

요약
1번 역에서 출발하는 간선 가중치 방향 그래프가 주어졌을 때, 각 질의마다 목적지까지 길이가 [r, p/(p-1)·r] 구간에 드는 경로가 있는지 판별합니다.
난이도

보통10점 중 7점

유형
동적 계획법, 정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

플랫랜드의 수도와 인근 도시를 전철로 잇는 철도망은 매우 낡았다. 이를 현대화하기 위해 수도에서 역 하나까지 가는 급행 전철을 운행하기로 결정했다.

플랫랜드 철도망에는 nn개의 역이 있으며 1번부터 nn번까지 번호가 붙어 있다. 수도는 1번 역이다. 역 사이에는 단방향 구간이 mm개 있다. 급행은 각 구간을 번호가 작은 역에서 번호가 큰 역 방향으로만 지날 수 있다. 각 구간을 지나는 데 걸리는 시간이 주어진다.

경로는 구간들의 나열이다. 첫 구간은 수도에서 출발하며, 연속한 두 구간에서는 앞 구간의 도착역이 뒷 구간의 출발역이다. 경로의 소요 시간은 경로에 포함된 모든 구간 시간의 합이다. 역에서 머무는 시간은 무시한다.

교통부는 수도에서 출발하는 경로 후보를 여러 개 검토할 계획이다. 각 후보는 도착역 번호와 예상 소요 시간 rr로 주어진다. 정확히 rr에 맞추기 어려울 수 있으므로, 교통부는 매개변수 pp로 허용 범위를 정한다. 소요 시간이 xx인 경로는 r≤x≤pp−1⋅rr \le x \le \frac{p}{p-1} \cdot r을 만족하면 예상 시간 rr에 대해 허용된다.

각 후보에 대해 허용되는 경로가 존재하는지 판단하는 프로그램을 작성하라.

입력

프로그램 한 번의 실행으로 여러 테스트를 처리해야 한다. 첫 줄에는 테스트의 개수 tt가 주어진다 (1≤t≤10001 \le t \le 1000). 각 테스트는 다음 형식으로 이어진다.

첫 줄에는 네 정수 nn, mm, qq, pp가 주어진다. 각각 역의 수, 구간의 수, 후보의 수, 예상 시간에서 허용되는 초과 정도를 정하는 매개변수이다 (2≤n≤500 0002 \le n \le 500\,000, 1≤m≤500 0001 \le m \le 500\,000, 1≤q≤500 0001 \le q \le 500\,000, 2≤p≤202 \le p \le 20).

다음 mm개 줄에는 각각 viv_i, uiu_i, did_i가 주어진다. 출발역, 도착역, 구간을 지나는 시간이다 (1≤vi<ui≤n1 \le v_i < u_i \le n, 1≤di≤10111 \le d_i \le 10^{11}). 모든 역에는 수도에서 그 역으로 끝나는 경로가 최소 하나 존재함이 보장된다.

다음 qq개 줄에는 각각 fif_i와 rir_i가 주어진다. 예상 시간 rir_i에 대해 역 fif_i까지 허용되는 경로가 존재하는지 묻는 질의이다 (2≤fi≤n2 \le f_i \le n, 1≤ri≤10171 \le r_i \le 10^{17}).

모든 테스트에서 nn, mm, qq의 합은 각각 500 000500\,000을 넘지 않는다.

출력

테스트마다 한 줄씩, 총 tt줄을 출력한다. 각 테스트에 대해 0과 1로 이루어진 길이 qq의 문자열 ss를 출력한다. 역 fif_i까지 소요 시간이 구간 [ri,pp−1⋅ri][r_i, \frac{p}{p-1} \cdot r_i]에 드는 경로가 존재하면 sis_i는 11이고, 그렇지 않으면 00이다.

힌트

두 번째 예제에 대한 설명이다.

  • 첫 번째 질의에는 소요 시간이 1+120+1=1221 + 120 + 1 = 122인 경로가 맞다.
  • 두 번째 질의에는 소요 시간이 1+1+1=31 + 1 + 1 = 3인 경로가 맞다.
  • 네 번째 질의에는 소요 시간이 70+1+1=7270 + 1 + 1 = 72인 경로가 맞다.

세 번째와 다섯 번째 질의에는 맞는 경로가 없다.

예제2

  1. 예제 1

    입력
    2
    3 3 5 20
    1 2 20
    2 3 1
    1 3 10
    2 19
    2 20
    3 20
    3 21
    3 9
    7 10 5 5
    1 2 15
    1 3 10
    2 4 21
    3 4 30
    2 5 14
    3 5 31
    4 6 3
    5 6 14
    1 7 39
    5 7 13
    7 42
    7 43
    7 44
    5 39
    6 44
    
    예상 출력
    11110
    10111
    
  2. 예제 2

    입력
    1
    4 6 5 2
    1 2 1
    2 3 1
    3 4 1
    1 2 70
    2 3 120
    3 4 4
    4 90
    4 2
    4 10
    4 37
    2 34
    
    예상 출력
    11010