번개 에너지 보고서

시간 제한1초메모리 제한256 MB

요약
트리에서 여러 경로에 값을 더하는 갱신이 주어질 때, 각 정점에 최종적으로 누적된 값을 구한다.
난이도

보통10점 중 7점

유형
트리, 누적 합, DFS, 구현
정답자
아직 제출이 없습니다

문제

천둥 시는 번개로 전력을 공급받는 집들의 연결망이다. 일부 집 쌍은 전선으로 연결되어 있으며, 이 전선들은 트리를 이룬다. 즉, 임의의 두 집 사이에는 정확히 하나의 경로가 존재한다. 모든 집에는 무한한 양의 에너지를 저장할 수 있는 배터리가 있으며, 달이 시작될 때 모든 배터리의 값은 00이다.

한 달 동안 도시에는 번개가 여러 번 친다. 각 번개는 특이하게도 두 집을 동시에 때린다. 집 AA는 빨간 번개를, 집 BB는 파란 번개를 맞으며, AA에서 BB까지의 경로 위에 있는 모든 집(양 끝 집 포함)에 CC만큼의 에너지를 전달한다. 이 에너지는 해당 집들의 배터리에 더해진다.

달이 끝날 때, 각 집의 배터리에 저장된 총 에너지를 보고해야 한다. 이번 달에 관측된 번개 기록을 바탕으로 정확한 보고서를 작성하라.

입력

첫 번째 줄에는 테스트 케이스의 수 TT (T≤10T \le 10)가 주어진다. 각 테스트 케이스는 다음과 같이 주어진다.

  • 집의 수 NN (2≤N≤500002 \le N \le 50000)이 한 줄에 주어진다. 집은 00번부터 N−1N-1번까지 번호가 매겨져 있다.
  • 이어지는 N−1N-1개의 줄에는 각각 두 정수 XX와 YY (0≤X,Y≤N−10 \le X, Y \le N-1)가 주어지며, 집 XX와 집 YY가 전선으로 연결되어 있음을 뜻한다. 이 전선들은 항상 트리를 이룬다.
  • 그 다음 줄에는 번개의 수 QQ (1≤Q≤500001 \le Q \le 50000)가 주어진다.
  • 이어지는 QQ개의 줄에는 각각 세 정수 AA, BB, CC (0≤A,B≤N−10 \le A, B \le N-1, 1≤C≤1001 \le C \le 100)가 주어진다. 이는 집 AA에서 집 BB까지의 경로 위 모든 집에 에너지 CC를 더하는 번개를 뜻한다. AA와 BB는 같을 수도 있으며, 이 경우 그 집 하나에만 에너지가 더해진다.

출력

각 테스트 케이스마다 먼저 Case #X: 줄을 출력한다. 여기서 XX는 11부터 시작하는 테스트 케이스 번호이다. 그 다음 NN개의 줄을 출력하는데, ii번째 줄(i=0,1,…,N−1i = 0, 1, \ldots, N-1)에는 달이 끝났을 때 집 ii의 배터리에 저장된 총 에너지를 출력한다.

예제3

  1. 예제 1

    입력
    1
    9
    0 1
    1 2
    2 3
    2 4
    2 7
    7 8
    7 6
    6 5
    5
    1 4 10
    3 5 3
    0 8 5
    1 6 10
    4 4 100
    
    예상 출력
    Case #1:
    5
    25
    28
    3
    110
    3
    13
    18
    5
    
  2. 예제 2

    입력
    1
    2
    0 1
    2
    0 1 7
    0 0 5
    
    예상 출력
    Case #1:
    12
    7
    
  3. 예제 3

    입력
    1
    5
    0 1
    0 2
    0 3
    0 4
    3
    1 2 10
    3 4 5
    0 0 1
    
    예상 출력
    Case #1:
    16
    10
    10
    5
    5