Se dă un arbore cu noduri și probabilități pe muchii. Pe muchia de la nodul la se găsește probabilitate . Î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 la nodul este dezvelită, se întâmplă una dintre următoarele:
- Dacă niciuna dintre pisicile de la nodurile sau 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 .
- 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.
- 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ă va avea o probabilitate să fi râmas flămândă (respectiv 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ă pe care o poate avea 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:
- reprezinta numărul de noduri din arbore. Acestea sunt numerotate de la la .
- conține elemente cu semnificația că există muchie între și pentru .
- conține tot elemente cu semnificația că . Aceste numere sunt numere întregi pentru a evita erorile de precizie. Se garantează că .
Funcția va întoarce un număr întreg , cu proprietatea ca probabilitatea cerută în enunț să satisfacă . Numărul acesta se poate demonstra că este mereu întreg.
Concurentul NU va implementa o funcție main
.
Subtask 1 (6 puncte)
Subtask 2 (9 puncte)
- Se garantează că pentru oricare nod , există fie valori, fie nicio valoare în cu proprietatea ca .
Subtask 3 (8 puncte)
- Fiecare nod are grad maxim .
Subtask 4 (18 puncte)
Subtask 5 (19 puncte)
Subtask 6 (7 puncte)
- Se garantează că pentru oricare nod , există fie valori, fie nicio valoare în cu proprietatea ca .
Subtask 7 (16 puncte)
- Toate probabilitățile corespunzătoare muchiilor sunt egale între ele.
Subtask 8 (17 puncte)
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: .
Î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ă!