불꽃놀이의 아름다움

면접 대비

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

요약
가중치가 있는 트리에서 한 정점을 뿌리로 골라 다른 모든 정점 v에 대해 W[v]와 뿌리에서 v까지의 거리의 곱의 합을 최대로 만드는 값을 구한다.
난이도

보통10점 중 7점

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

문제

봄 축제 때 정보과학관에서는 아무 행사도 진행되지 않는다는 것에 화가 난 찬솔이는 정보과학관 입구 앞에서 직접 불꽃놀이 행사를 진행하려고 한다.

정보과학관 입구 앞에 폭죽 또는 스위치를 설치할 수 있는 NN개의 공간과, 서로 다른 두 공간을 연결하는 도화선 N−1N-1개가 준비되어 있다. NN개의 공간은 도화선을 통해 모두 서로 연결되어 있다. 찬솔이는 NN개의 공간 중 한 곳에 스위치를 설치하고, 나머지 N−1N-1개의 공간에는 폭죽을 설치한다. 만약 ii번째 공간에 스위치가 설치되지 않았다면, ii번째 공간에는 W_iW\_i개의 폭죽이 설치된다.

스위치를 설치한 공간의 번호를 aa라고 하자. 공간 xx와 yy 사이의 거리 D(x,y)D(x,y)는 xx에서 yy까지 이동하는 데 거쳐 가는 도화선의 최소 개수로 정의된다. 폭죽이 설치된 각 공간 bb에서 터지는 폭죽의 아름다움은 W_b×D(a,b)W\_b\times D(a,b)이다.

불꽃놀이의 아름다움은 스위치가 설치된 공간 aa를 제외하고, 폭죽이 설치된 모든 공간 bb에서 터지는 폭죽의 아름다움의 합으로 정의된다. 스위치를 설치할 공간을 잘 정해서 얻을 수 있는 불꽃놀이의 아름다움의 최댓값을 구해보자.

입력

첫째 줄에 공간의 수 NN이 주어진다.

둘째 줄부터 N−1N-1개의 줄에 걸쳐 도화선이 연결하는 두 공간의 번호 a,ba,b가 공백으로 구분되어 주어진다.

N+1N+1번째 줄에 NN개의 정수 W_1,W_2,⋯ ,W_NW\_1,W\_2,\cdots ,W\_N이 공백으로 구분되어 주어진다.

출력

가능한 불꽃놀이의 아름다움 중 최댓값을 출력한다.

제한

  • 2≤N≤200,0002\leq N\leq 200\\, 000
  • 1≤a,b≤N1\leq a,b\leq N
  • 1≤W_i≤1061\leq W\_i\leq 10^6
  • NN개의 공간은 도화선을 통해 서로 연결되어 있다.
  • 입력으로 주어지는 수는 모두 정수이다.

힌트

정답이 32비트 정수 범위를 벗어날 수 있으므로 C/C++에서는 long long 타입, Java에서는 long 타입을 사용하는 것을 권장한다.

입출력 양이 많으므로 문제지 2-4페이지의 언어 가이드에 있는 빠른 입출력을 사용하는 것을 권장한다.

예제1

  1. 예제 1

    입력
    5
    2 3
    3 1
    4 1
    1 5
    1 2 2 3 4
    
    예상 출력
    25