호반우가 학교에 지각한 이유 7

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

요약
각 노드를 루트로 삼았을 때 주어진 채움 규칙에 따라 M번 노드가 가득 찰 때까지 루트로 흘려보내야 하는 성수의 양을 구한다.
난이도

어려움10점 중 8점

유형
트리, DFS, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

마왕의 정체는 작년에 호반우가 키우던 애완용 트리였다. 트리는 여전히 어지러움을 느끼며 루트를 계속 바꾸고 있다. 이를 본 호반우는 트리의 루트를 통해서 신성한 물인 성수를 흘려보내 트리를 정화하려고 한다.

트리는 NN개의 노드와 N−1N-1개의 간선으로 이루어져 있으며 각 노드는 11번부터 NN번까지의 번호가 정해져 있다. 1≤i≤N1 ≤ i ≤ N인 ii에 대해 ii번 노드는 양의 정수 a_ia\_i만큼 내부에 성수를 저장할 수 있는 공간을 가진다.

어떤 노드 VV에 성수가 흘러 들어올 때 아래의 규칙을 따른다.

  1. VV와 연결된 자식 노드로만 성수를 흘려보낼 수 있다.
  2. 자식 노드가 없거나 모든 자식 노드의 내부가 성수로 가득 찼다면 VV 내부의 공간이 성수로 차기 시작한다.
  3. VV 내부 공간의 크기가 tt라면 공간을 가득 채우는데 성수가 tt만큼 필요하다.
  4. 항상 VV와 연결된 성수로 가득 차지 않은 자식 노드 중 번호가 가장 큰 노드와 가장 작은 노드에 동일한 양의 성수를 동시에 흘려보낸다.
  5. 규칙 4에서 번호가 가장 큰 노드와 가장 작은 노드가 같을 경우 해당 노드에만 성수를 흘려보낸다.
  6. 흘려보내야할 노드의 번호는 규칙 4를 기반으로 계속 유동적으로 변한다.
  7. 성수는 정말 빠르게 흘러가기 때문에 물이 흘러가는 시간은 무시해도 된다. 다시 말해 성수는 루트로 흘려보내자마자 바로 성수가 채워져야 할 공간들에 도착한다.

트리는 MM번 노드의 공간이 성수로 가득 차면 정화되며 정화된 이후로는 더 이상 성수를 흘려보낼 수 없다고 한다.

트리의 루트가 계속 변해 어지러워하는 호반우에게 각 노드가 루트일 때 트리를 정화하기 위해 필요한 성수의 양을 알려주자!

입력

첫 번째 줄에 트리의 노드 개수 NN과 성수로 가득 차야 할 노드 번호 MM이 공백을 두고 주어진다. (1≤M≤N≤300,000)(1 ≤ M ≤ N ≤ 300\\,000)

두 번째 줄에 NN개의 양의 정수 a_1,,,a_2,,,a_3,,⋯ ,,a_Na\_{1},\\,\\,a\_{2},\\,\\,a\_{3},\\,\cdots,\\,a\_{N}이 공백을 두고 주어진다. (1≤a_i≤109)(1 ≤ a\_{i} ≤ 10^{9})

a_ia\_{i}는 ii번 노드가 내부에 성수를 저장할 수 있는 공간의 크기이다.

세 번째 줄부터 N−1N-1개의 줄에 걸쳐 트리의 각 간선이 연결하는 두 정점의 번호가 공백을 두고 주어진다.

출력

NN개의 줄에 걸쳐 답을 출력한다. ii번째 줄에는 ii번 노드가 루트일 때 트리가 정화되기 위해 루트로 흘려보낼 성수의 양을 출력한다.

힌트

입출력의 양이 많으므로, 빠른 입출력을 사용하는 것을 권장합니다. 대표적인 언어에 따른 빠른 입출력은 아래를 참고해 주세요.

  • C++: cin, cout을 사용하는 경우 입출력 전에 cin.tie(nullptr); ios::sync_with_stdio(false);를 한 번 적용해야 합니다. 줄 바꿈할 때는 endl 대신 ‘\n’을 사용해야 합니다.
  • Java: BufferedReader와 BufferedWriter를 사용해야 합니다.
  • Python3, PyPy3: input() 대신 sys.stdin.readline().rstrip()을 사용해야 합니다.

예제3

  1. 예제 1

    입력
    5 2
    5 8 3 9 12
    1 2
    2 3
    4 2
    1 5
    
    예상 출력
    32
    37
    34
    28
    20
    
  2. 예제 2

    입력
    6 3
    2 7 4 3 10 12
    1 2
    3 2
    4 2
    2 5
    6 5
    
    예상 출력
    8
    12
    38
    12
    18
    9
    
  3. 예제 3

    입력
    9 3
    12 71 54 83 59 62 10 67 5
    3 1
    2 1
    1 4
    5 4
    3 6
    6 7
    8 6
    6 9
    
    예상 출력
    411
    340
    423
    328
    269
    361
    351
    294
    356