트리와 수열 합치기
시간 제한2초메모리 제한1024 MB
트리의 정점에 수열 B의 원소를 하나씩 대응시킬 때, 색깔 영역마다 A 합과 대응된 B 합을 곱해 더한 점수의 최솟값과 최댓값을 구합니다.
문제
정휘는 정점이 개인 트리와 길이가 인 수열을 갖고 있다. 트리의 각 정점에는 정수가 하나씩 적혀 있으며, 각 간선은 1 이상 20만 이하의 자연수로 표현되는 색깔 중 하나로 칠해져 있다.
정휘는 트리와 수열을 따로 구분해야 하는 게 귀찮아서, 트리의 정점과 수열의 원소를 일대일대응시키는 방식으로 트리와 수열을 합치기로 했다. 물론 그냥 합치는 건 재미가 없으니, 트리와 수열을 합칠 때의 점수를 아래와 같이 정의하기로 했다.
-
아래 조건을 만족하도록 트리의 간선들을 1개 이상의 구역으로 나눈다. 아래 방식으로 트리를 나누는 방법은 유일하다.
- 트리의 모든 간선은 정확히 하나의 구역에 속한다.
- 모든 구역은 적어도 1개 이상의 간선을 포함한다.
- 만약 한 끝점을 공유하는 두 간선의 색깔이 같다면 두 간선은 같은 구역에 속한다.
-
어떤 구역의 점수는 (구역에 속한 간선들의 끝점에 적힌 수의 합) × (구역에 속한 간선들의 끝점에 대응되는 수열의 원소의 합)으로 정의된다.
-
트리와 수열을 합칠 때의 점수는 모든 구역의 점수를 더한 값이다.
예를 들어, 아래 트리는 4개의 구역으로 나누어진다.

그리고, 만약 정휘가 아래와 같은 방식으로 수열과 트리를 합친다면, 아래와 같은 102점을 얻게 된다.

정휘는 트리와 수열을 합칠 때 얻을 수 있는 점수의 최솟값과 최댓값이 궁금하지만, 트리와 수열의 크기가 너무 커서 계산하지 못하고 있다. 컴퓨터를 잘 다루는 여러분들이 정휘를 도와 얻을 수 있는 점수의 최솟값과 최댓값을 구해보자.
입력
첫째 줄에 트리의 정점의 개수와 수열의 길이를 의미하는 정수 이 주어진다. ()
둘째 줄부터 개의 줄에 걸쳐, 트리의 간선을 의미하는 세 정수 가 한 줄에 하나씩 공백으로 구분되어 주어진다. 이는 번 정점과 번 정점을 연결하는 간선의 색깔이 라는 것을 의미한다. (, )
다음 줄에는 트리의 번 정점에 적힌 정수 이 공백으로 구분되어 주어진다. ()
다음 줄에는 길이가 인 수열의 원소를 나타내는 정수 이 공백으로 구분되어 주어진다. ()
출력
첫째 줄에 정휘가 얻을 수 있는 점수의 최솟값을 출력한다.
둘째 줄에 정휘가 얻을 수 있는 점수의 최댓값을 출력한다.
힌트
- 정답이 32비트 정수 범위를 넘을 수 있다.