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

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

티켓

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

요약
트리 구조의 도시에서 거리 k 이내 도시로 이동하는 표를 w원에 팝니다. 각 질의 도시에서 수도인 1번 도시까지 가는 최소 비용을 구합니다.
난이도

어려움10점 중 8점

유형
트리, 분할 정복, 최단 경로
정답자
아직 제출이 없습니다

문제

베를란드에는 nn개의 도시가 있으며, 1번부터 nn번까지 번호가 붙어 있다. 1번 도시는 베를란드의 수도이다. 도시들은 n−1n-1개의 기차로 연결되어 있고, ii번째 기차는 도시 aia_i와 bib_i를 잇는다. 기차 노선망 덕분에 어느 도시에서든 다른 모든 도시로 갈 수 있다. 여러 기차를 거쳐도 된다.

티켓은 mm종류가 있다. ii번째 종류는 도시 viv_i에서 wiw_i베를란드 달러에 살 수 있다. 이 티켓으로 viv_i에서 거리가 kik_i 이하인 임의의 도시 xx로 이동할 수 있다. 거리는 이동에 쓴 기차의 수로 잰다.

어느 도시에서든 수도로 가는 최소 비용을 구하라.

입력

첫 줄에 세 정수 nn, mm, qq (1≤n≤1051 \le n \le 10^5, 0≤m≤1050 \le m \le 10^5, 1≤q≤1051 \le q \le 10^5)가 주어진다. 각각 도시 수, 티켓 종류 수, 질의 수이다.

다음 n−1n-1개의 줄에는 ii번째 기차가 잇는 두 도시 aia_i와 bib_i (1≤ai,bi≤n1 \le a_i, b_i \le n)가 주어진다.

다음 mm개의 줄에는 세 정수 viv_i (1≤vi≤n1 \le v_i \le n), 티켓을 사서 쓸 수 있는 도시, kik_i (1≤ki≤n−11 \le k_i \le n-1), 티켓으로 이동할 수 있는 최대 거리, wiw_i (0≤wi≤1090 \le w_i \le 10^9), 티켓 가격이 주어진다.

다음 qq개의 줄에는 수도로 가는 비용을 구하려는 도시 qiq_i (1≤qi≤n1 \le q_i \le n)가 주어진다.

출력

각 질의마다 해당 도시에서 수도로 가는 최소 비용을 한 줄에 출력한다. 이 티켓들로 수도에 갈 수 없다면 <<Impossible>> (따옴표 제외)을 출력한다.

힌트

첫 번째 예제에서 도시 55에서 수도로 가려면 다음과 같이 한다.

  • 1번 티켓을 10달러에 사서 도시 44로 이동한다.
  • 3번 티켓을 1달러에 사서 수도인 도시 11로 이동한다.

1번 티켓으로 도시 33과 22로 갈 수도 있다. 도시 55에서 도시 33까지의 거리는 기차 1개, 도시 22까지는 기차 2개로 둘 다 2 이하이다. 그 뒤 2번이나 4번 티켓으로 수도에 갈 수 있지만, 이 경로는 훨씬 비싸다.

예제2

  1. 예제 1

    입력
    5 4 5
    1 2
    2 3
    3 4
    3 5
    5 2 10
    3 1 40
    4 3 1
    2 1 100
    1
    2
    3
    4
    5
    
    예상 출력
    0
    100
    41
    1
    11
    
  2. 예제 2

    입력
    2 0 2
    1 2
    1
    2
    
    예상 출력
    0
    Impossible