만드는 중입니다

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

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

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

요약
각 노드를 루트로 했을 때, 가장 작은 번호와 가장 큰 번호의 차지 않은 자식 노드에 같은 양을 동시에 부어 M번 노드가 찰 때까지 필요한 물의 양을 구합니다.
난이도

어려움10점 중 9점

유형
트리, DFS, 시뮬레이션, 그리디
정답자
아직 제출이 없습니다

문제

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

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

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

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

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

루트가 계속 바뀌어 어지러워하는 호반우를 위해, 각 노드가 루트일 때 트리를 정화하는 데 필요한 성수의 양을 알려주자.

입력

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

두 번째 줄에 NN개의 양의 정수 a1,a2,⋯ ,aNa_{1}, a_{2}, \cdots, a_{N}이 공백으로 구분되어 주어진다. (1≤ai≤1091 \le a_{i} \le 10^{9}) aia_{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