만드는 중입니다

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

불안정성

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

요약
루트가 있는 트리에서 간선을 잘라 각 조각이 어떤 k에 대해 k-good이 되게 하고, 조각들의 f(k) 합의 최솟값을 구합니다.
난이도

어려움10점 중 8점

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

문제

강 건너편 소나무 숲은 한 시간 전만 해도 5월 햇살에 환했지만, 이제는 흐려지고 번져서 사라졌다. 남은 것은 정점이 NN개인 거대한 나무 한 그루뿐이다. 이 나무는 1번 정점에 단단히 뿌리를 내리고 있다.

119호 방에 있던 이반은 이 나무를 바라보고 있었다. 자세히 보니 각 정점 ii에 수 aia_i가 적혀 있었다. 그때 kk-좋은 부분트리라는 정의가 떠올랐다. 부분트리가 kk-좋다는 것은, 부모 uu와 자식 vv를 잇는 모든 간선 (u,v)(u, v)에 대해 av=(au+1) mod ka_v = (a_u + 1) \bmod k가 성립하고, 부분트리의 모든 정점 vv에 대해 av<ka_v < k도 성립한다는 뜻이다. 각 자연수 kk에 대해 kk-좋은 나무의 불안정성 f(k)f(k)가 주어진다.

다시 나무를 보니, 마법의 톱을 오른손에 든 이반이 나무 앞에 떠 있었다. 이반은 몇 개의 가지를 자르기로 했다. 잘라낸 간선을 제거하면 나무가 여러 부분트리로 나뉜다. 이반은 이 부분트리마다 수 kik_i를 하나씩 골라, 그 부분트리가 kik_i-좋도록 했다. 잘라낼 간선의 집합과 각 부분트리의 kik_i를 함께 정한 것을 절단이라고 부른다. 절단의 불안정성은 얻어진 모든 부분트리에 대한 f(ki)f(k_i)의 합이다. 이반이 절단의 최소 불안정성을 구하도록 도와 달라.

입력

첫 줄에 자연수 NN이 주어진다. 나무의 정점 개수이다. 둘째 줄에는 NN개의 정수가 주어지며, ii번째 수는 aia_i이다 (0≤ai≤N−10 \le a_i \le N-1). 셋째 줄에는 NN개의 정수가 주어지며, kk번째 수는 f(k)f(k)이다 (1≤f(k)≤1091 \le f(k) \le 10^9). 다음 N−1N-1개의 줄에는 나무의 간선 정보가 주어진다. ii번째 줄에는 간선 (ui,vi)(u_i, v_i)를 나타내는 두 정수 uiu_i, viv_i가 주어진다 (1≤ui,vi≤N1 \le u_i, v_i \le N, ui≠viu_i \ne v_i).

출력

절단의 최소 불안정성을 한 줄에 출력한다.

힌트

(a) 첫 번째 입력의 절단 스케치(b) 두 번째 입력의 절단 스케치

예제2

  1. 예제 1

    입력
    7
    2 3 0 3 2 0 0
    6 8 2 9 9 9 9
    1 2
    2 3
    1 4
    4 5
    5 6
    5 7
    
    예상 출력
    11
    
  2. 예제 2

    입력
    7
    2 3 0 3 2 0 0
    6 8 2 9 9 9 1
    1 2
    2 3
    1 4
    4 5
    5 6
    5 7
    
    예상 출력
    4