Pisici

Time limit: 0.1s Memory limit: 512MB Input: Output:

Se dă un arbore cu N2N - 2 noduri și probabilități pp pe muchii. Pe muchia de la nodul xx la yy se găsește probabilitate px,yp_{x,y}. În fiecare nod se află câte o pisică flămândă. Pe fiecare muchie se alfă câte o plăcintă gustoasă, toată numai șoricei, whiskas, lăptic etc. Toate plăcintele sunt inițial acoperite, practic invizibile pisicuțelor.

Plăcintele vor fi dezvelite pe rând și bine-cunoscutul nostru personaj, Marcel, are onoarea de a stabili ordinea în care plăcintele vor fi arătate pisicuțelor. Atunci când plăcinta de pe muchia de la nodul xx la nodul yy este dezvelită, se întâmplă una dintre următoarele:

  1. Dacă niciuna dintre pisicile de la nodurile xx sau yy nu au mâncat încă plăcintă, fie pisicile se vor înțelege și vor mânca împreună plăcinta de pe muchie, fie se vor certa și o vor răsturna. Probabilitatea ca cele două să nu mănânce amândouă va fi de px,yp_{x,y}.
  2. Dacă exact una dintre pisici a mâncat deja, acelei pisici îi va fi lene să se mai miște din nodul ei și o va lasă (cu generozitate) pe cealaltă să mănânce în liniște și pace.
  3. Dacă ambele pisici au mâncat deja, mâncarea va rămâne neatinsă.

După ce toate plăcintele au fost descoperite, e clar că fiecare pisică xx va avea o probabilitate qxq_x să fi râmas flămândă (respectiv 1qx1 -q_x să fi mâncat).

Ajutați-l pe Marcel să găsească o ordine a dezvelirii plăcintelor în care scenariul 3 (dintre cele descrise mai sus) NU se poate întâmpla, și pentru care are valoarea maximă qq pe care o poate avea qxq_x este minimizată.

Protocol de interacțiune

Concurentul va implementa o singură funcție, solve, cu următoarea semnătură:

long long solve (int n, std::vector<int> t, std::vector<int> v);

Parametrii acestei funcții au următoarea semnificație:

  • nn reprezinta numărul de noduri din arbore. Acestea sunt numerotate de la 11 la nn.
  • tt conține n1n-1 elemente cu semnificația că există muchie între i+2i + 2 și t[i]t[i] pentru i=0,1,...,n2i = 0, 1, ..., n-2.
  • vv conține tot n1n - 1 elemente cu semnificația că pi+2,t[i]=2v[i]p_{i+2,t[i]} = 2^{-v[i]}. Aceste numere sunt numere întregi pentru a evita erorile de precizie. Se garantează că 0v[i]1090 \le v[i] \le 10^9.

Funcția va întoarce un număr întreg rr, cu proprietatea ca probabilitatea qq cerută în enunț să satisfacă q=2rq = 2^{-r}. Numărul acesta se poate demonstra că este mereu întreg.

Concurentul NU va implementa o funcție main.

Subtask 1 (6 puncte)

  • N8N \le 8

Subtask 2 (9 puncte)

  • N25N \le 25
  • Se garantează că pentru oricare nod i=1,2,...,ni = 1, 2, ..., n, există fie 22 valori, fie nicio valoare jj în {1,2,...,n}\{1, 2, ..., n\} cu proprietatea ca t[j]=it[j] = i.

Subtask 3 (8 puncte)

  • N100 000N \le 100\ 000
  • Fiecare nod are grad maxim 22.

Subtask 4 (18 puncte)

  • N50N \le 50

Subtask 5 (19 puncte)

  • N700N \le 700

Subtask 6 (7 puncte)

  • N100 000N \le 100\ 000
  • Se garantează că pentru oricare nod i=1,2,...,ni = 1, 2, ..., n, există fie 22 valori, fie nicio valoare jj în {1,2,...,n}\{1, 2, ..., n\} cu proprietatea ca t[j]=it[j] = i.

Subtask 7 (16 puncte)

  • N100 000N \le 100\ 000
  • Toate probabilitățile corespunzătoare muchiilor sunt egale între ele.

Subtask 8 (17 puncte)

  • N100 000N \le 100\ 000

Exemple

Input

5
1 1
1 2
3 1
1 2

Output

3

Input

8
1 793356
1 1666576
2 7158429
1 2321928
4 2158429
6 1035046
1 1852042

Output

7951785

Explicații:

În primul exemplu, ordinea dezvelirii plăcintelor de pe muchie este: (1 3),(1 2),(3 4),(1 5)(1\ 3), (1\ 2), (3\ 4), (1\ 5).
În al doilea exemplu, exista o ordine pentru care răspunsul ar fi fost mai mică ca cea din exemplu, numai că aceasta presupunea ca probabilitatea ca două pisici să refuze ambele plăcinta dintre ele să fi fost nenulă!

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