Arbore

Time limit: 2s Memory limit: 512MB Input: arbore.in Output: arbore.out

Se dă un arbore cu NN noduri, numerotate de la 11 la NN . Fiecare muchie din arbore are un cost număr natural nenul asociat. O operație constă în a alege o muchie cu costul strict pozitiv și a-i scădea costul cu 11.

Pentru un nod vv din arbore și un număr natural kk, se notează cu f(v,k)f(v, k) suma minimă a costurilor drumurilor de la nodul vv la restul nodurilor din arbore care se poate obține aplicând în mod optim cel mult kk operații de tipul descris anterior.

Cerință

Se dau QQ interogări de forma (v,k1,k2)(v, k_1, k_2), unde vv este un nod din arbore, iar k1k_1 și k2k_2 sunt numere naturale astfel încât k1k2k_1 ≤ k_2. Pentru fiecare interogare să se calculeze k=k1k2f(v,k)\displaystyle \sum_{k=k_1}^{k_2} f (v, k), adică suma valorilor f(v,k)f (v, k) pentru k1kk2k_1 ≤ k ≤ k_2, modulo 109+710^9 + 7.

Date de intrare

Prima linie a fişierului de intrare arbore.in conţine numărul NN , reprezentând numărul de noduri din arbore.

Pe următoarele N1N − 1 linii se află câte 33 numere u v wu \ v \ w, reprezentând o muchie din arbore între nodurile uu și vv, care are costul ww.

Următoarea linie conține un singur număr QQ, reprezentând numărul de interogări, iar pe următoarele QQ linii se află câte trei numere v k1 k2v \ k_1 \ k_2, cu semnificația din enunț.

Date de ieșire

Fișierul de ieșire arbore.out trebuie să conțină QQ linii, fiecare coținând câte un număr natural care reprezintă răspunsul pentru fiecare interogare dată, în ordinea în care acestea sunt date în fișierul de intrare.

Restricții și precizări

  • 1N200 0001 \leq N \leq 200 \ 000
  • 1Q400 0001 \leq Q \leq 400 \ 000
  • 1w1081 \leq w \leq 10^8
  • 0k1k210140 \leq k_1 \leq k_2 \leq 10^{14}
# Punctaj Restricții
1 12 N2 000,Q2 000,k1=k2=0N ≤ 2 \ 000, Q ≤ 2 \ 000, k_1 = k_2 = 0
2 7 N200 000,Q400 000,k1=k2=0N ≤ 200 \ 000, Q ≤ 400 \ 000, k_1 = k_2 = 0
3 13 N2 000,Q2 000,k1=k2N ≤ 2 \ 000, Q ≤ 2 \ 000, k_1 = k_2
4 16 N5 000,Q200 000,k1=k2N ≤ 5 \ 000, Q ≤ 200 \ 000, k_1 = k_2
5 19 N100 000,Q100 000,k1=k2N ≤ 100 \ 000, Q ≤ 100 \ 000, k_1 = k_2
6 14 N200 000,Q400 000,k1=k2N ≤ 200 \ 000, Q ≤ 400 \ 000, k_1 = k_2
7 11 N100 000,Q100 000N ≤ 100 \ 000, Q ≤ 100 \ 000
8 8 Fără restricții suplimentare.

Exemple

arbore.in

5
1 2 3
2 3 4
2 5 6
1 4 2
4
1 4 5
2 1 1
5 20 22
4 0 0

arbore.out

21
16
0
27

Explicație

Arborele are N=5N = 5 noduri si este ilustrat în Figura 1 împreună cu costurile asociate muchiilor sale. Se dau Q=4Q = 4 interogări, după cum urmează.

  • Prima interogare: Pentru k=4k = 4 se poate aplica operația descrisă în enunț muchiei 121−2 de 33 ori, respectiv muchiei 141−4 o dată, deci f(1,4)=11f(1, 4) = 11. Pentru k=5k = 5 se poate aplica operația descrisă în enunț muchiei 121−2 de 33 ori, muchiei 232−3 o dată, respectiv muchiei 252−5 o dată, deci f(1,5)=10f(1, 5) = 10. Astfel, răspunsul este f(1,4)+f(1,5)=11+10=21f(1, 4) + f(1, 5) = 11 + 10 = 21.
  • A doua interogare: Se poate scădea costul muchiei 121−2 o dată, deci răspunsul este f(1,1)=16f(1, 1) = 16.
  • A treia interogare: Se obervă că pentru oricare 20k2220 ≤ k ≤ 22, costurile tuturor muchiile din arbore pot fi scăzute până ajung la valoarea 00 (mai mult de atât nu este permis din definiția operației date), deci rezultatul este 00.
  • A patra interogare: k1=k2=0k_1 = k_2 = 0, deci nu avem la dispoziție nicio operație care să scadă costul muchiilor. Astfel, răspunsul este dat de suma costurilor drumurilor de la nodul 44 la restul nodurilor din arbore, care este 2+5+9+11=272 + 5 + 9 + 11 = 27.

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