McArbore

Time limit: 1.75s Memory limit: 1024MB Input: Output:

Cerință

Se dau nn, un șir de nn elemente cc și un arbore cu nn noduri, înrădăcinat în nodul 11. Există un șir ascuns aa de nn elemente.

Definim o operație "adună" pe un nod uu astfel:

  • Fie SS mulțimea tuturor frunzelor din subarborele lui uu;
  • Veți alege un xx, iar pentru toți vSv \in S, se va face operația av=av+xa_v = a_v + x;

Operația "adună" se poate face doar pe un nod "activ".

Definim costul unui șir astfel:

  • Inițial, cost=0cost = 0;
  • Pentru fiecare nod ii pe care vrem să îl activăm, cost=cost+cicost = cost + c_i;
  • Costul final va fi costcost;

De exemplu, pentru un arbore cu 44 noduri, având muchiile 1 2, 2 3 și 2 4, șirul c=[4,17,9,3]c = [4, 17, 9, 3] și șirul a=[4,9,3,3]a = [4, 9, 3, 3], dacă adăugăm la cost 44 pentru a activa nodul 11, la frunzele 33 și 44 putem adăuga -2 la a3a_3 și a4a_4, apoi -1, șirul final aa fiind [4,9,0,0][4, 9, 0, 0].

Care este costul minim pe care îl putem obține astfel încât pentru orice șir aa, după ce aplicăm niște operații "aduna", pentru orice frunză uu avem au=0a_u = 0, dacă inițial toate nodurile sunt inactive?

Date de intrare

Pe prima linie se va găsi numărul natural nn. Pe doua linie se vor afla nn numere naturale, a ii-a valoare reprezentând cic_i, pentru 1in1 \leq i \leq n. Pe următoarele n1n-1 linii se vor afla muchiile arborelui.

Dacă folosiți citire cu std::cin, vă recomandăm să adăugați aceste linii la începutul programului:

std::ios_base::sync_with_stdio(0);
std::cin.tie(0);

Date de ieșire

Pe prima linie se va găsi un singur număr întreg, costul minim.

Restricții și precizări

  • 2n1 000 0002 \leq n \leq 1 \ 000 \ 000;
  • 1ci1091 \leq c_i \leq 10^9, pentru 1in1 \leq i \leq n;
# Punctaj Restricții
1 4 Arborele este lanț și există muchie de la ii la i+1i+1, 1i<n1 \leq i < n
2 8 Arborele este lanț
3 5 Arborele este stea
4 12 n12n \leq 12
5 17 n20n \leq 20
6 54 Fără alte restricții

Exemplul 1

stdin

6
1 10 6 9 2 3
1 2
1 3
1 4
3 5
3 6

stdout

15

Explicație

Se vor activa nodurile 1,4,5,61, 4, 5, 6. Dacă ar fi activate doar nodurile 1,5,61, 5, 6, atunci pentru șirul a=[100,100,100,101,100,100]a = [100, 100, 100, 101, 100, 100], nu se poate ajunge în același timp la valori nule pe pozițiile 22, respectiv 44.

Exemplul 2

stdin

6
1 10 2 9 2 3
1 2
1 3
1 4
3 5
3 6

stdout

14

Explicație

Se vor activa nodurile 1,3,4,51, 3, 4, 5.

Log in or sign up to be able to send submissions!