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

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

외곽 순환 도로

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

요약
가중치가 있는 트리와 잎 노드들을 순환 도로로 잇는 그래프가 주어질 때, Q개의 질의마다 두 교차로 사이의 최단 이동 시간을 구합니다.
난이도

어려움10점 중 8점

유형
최단 경로, 트리, 누적 합
정답자
아직 제출이 없습니다

문제

KOI 도시는 NN개의 교차로와 N−1N - 1개의 양방향 도로로 이루어져 있다. 임의의 두 교차로는 도로만 사용해서 오갈 수 있으므로 도로망은 트리 구조이다. 도로는 2차원 평면 위에 놓여 있고, 두 도로는 끝점이 아닌 곳에서 교차하지 않는다. 각 도로에는 0 이상의 정수 가중치가 있으며, 이 가중치는 그 도로를 이용하는 데 걸리는 시간이다.

KOI 도시는 몇십 년 전까지만 해도 작은 마을이었지만, 사람이 유입되면서 크기가 급격히 커졌다. 시장은 행정 편의를 위해 교차로에 1 이상 NN 이하의 번호를 매겼다. 번호 체계는 다음 성질을 만족한다.

  • 1번 교차로는 도시의 중심이며, 2개 이상의 도로와 인접함이 보장된다.
  • 교차로 번호는 1번 교차로를 루트로 한 트리의 전위 순회(preorder) 순서 중 하나이다.
  • 모든 교차로에 대해, 직접 연결된 교차로 중 번호가 가장 작은 교차로를 기준으로 시계 반대 방향으로 인접한 교차로들의 번호를 나열하면 번호가 증가한다.

교통 체증이 심해지자 시장은 교통 인프라가 가장 빈약한 곳들을 외곽 순환 도로로 이었다. 도로 1개와만 인접한 교차로들의 번호를 증가하는 순서로 나열한 리스트를 v1,v2,…,vk{v_1, v_2, \dots, v_k}라고 하자. 시장은 모든 1≤i≤k1 ≤ i ≤ k에 대해 viv_i번 교차로와 v(i mod k)+1v_{(i \bmod k)+1}번 교차로를 잇는 양방향 도로를 건설하였다. 각 외곽 도로의 가중치 wiw_i는 0 이상의 정수이며 입력으로 주어진다. 번호 체계의 특성상 두 도로가 끝점 외에서 교차하지 않도록 외곽 순환 도로를 이을 수 있음을 관찰하면 좋다.

KOI 도시의 내비게이션 시스템을 구축하려고 한다. QQ개의 질의 uu, vv가 주어지면 uu번 교차로에서 vv번 교차로로 이동하는 데 걸리는 최소 시간을 출력해야 한다. 이 시간은 두 교차로를 잇는 경로들 중 가중치 합의 최솟값이다. 도로망 구조가 주어졌을 때 QQ개의 질의에 효율적으로 답하는 프로그램을 작성하라.

입력

첫 줄에 교차로 수 NN이 주어진다.

이후 N−1N - 1개의 줄이 주어진다. 이 중 ii번째 줄에는 두 정수 pip_i, cic_i가 공백으로 구분되어 주어진다. 이는 교차로 pip_i와 교차로 i+1i + 1을 잇는 가중치 cic_i의 양방향 도로가 있음을 뜻한다.

외곽 순환 도로를 건설하기 전에 도로 1개와만 인접한 교차로의 수를 kk라 하고, 그 번호를 증가하는 순서로 나열한 리스트를 v1,v2,…,vk{v_1, v_2, \dots, v_k}라고 하자. 다음 줄에 kk개의 정수 w1,w2,…,wkw_1, w_2, \dots, w_k가 공백으로 구분되어 주어진다. 이는 외곽 순환 도로에서 viv_i번 교차로와 vi mod k+1v_{i \bmod k+1}번 교차로를 잇는 도로의 가중치가 wiw_i임을 뜻한다.

다음 줄에 질의의 수 QQ가 주어진다. 이후 QQ개의 줄에 최소 시간을 알고 싶은 두 교차로의 번호 uu, vv가 주어진다.

출력

QQ개의 줄에 걸쳐 uu번 교차로와 vv번 교차로를 잇는 경로들 중 가중치 합의 최솟값을 정수 하나로 출력한다.

제한

  • 4≤N≤100,0004 ≤ N ≤ 100,000
  • 1≤pi≤i1 ≤ p_i ≤ i
  • 0≤ci,wi≤10120 ≤ c_i, w_i ≤ 10^{12}
  • 1≤Q≤250,0001 ≤ Q ≤ 250,000
  • 1≤u,v≤N1 ≤ u, v ≤ N, u≠vu ≠ v

예제3

  1. 예제 1

    입력
    4
    1 9
    1 8
    1 0
    9 9 9
    6
    1 2
    1 3
    1 4
    2 3
    2 4
    3 4
    
    예상 출력
    9
    8
    0
    9
    9
    8
    
  2. 예제 2

    입력
    11
    1 9
    1 8
    3 0
    4 7
    4 1
    3 6
    1 0
    8 7
    8 1
    10 6
    0 0 0 0 0 0
    21
    1 2
    1 3
    1 4
    1 5
    1 6
    1 7
    1 8
    1 9
    1 10
    1 11
    7 1
    8 2
    9 3
    10 4
    11 5
    1 6
    2 7
    3 8
    4 9
    5 10
    6 11
    
    예상 출력
    7
    8
    8
    7
    7
    7
    0
    7
    1
    7
    7
    7
    1
    7
    0
    7
    0
    8
    1
    6
    0
    
  3. 예제 3

    입력
    11
    1 9
    1 8
    3 0
    4 7
    4 1
    3 6
    1 0
    8 7
    8 1
    10 6
    1000000000000 1000000000000 1000000000000 1000000000000 1000000000000 1000000000000
    21
    1 2
    1 3
    1 4
    1 5
    1 6
    1 7
    1 8
    1 9
    1 10
    1 11
    7 1
    8 2
    9 3
    10 4
    11 5
    1 6
    2 7
    3 8
    4 9
    5 10
    6 11
    
    예상 출력
    9
    8
    8
    15
    9
    14
    0
    7
    1
    7
    14
    9
    15
    9
    22
    9
    23
    8
    15
    16
    16