Fişierul intrare/ieşire: | arbquery.in, arbquery.out | Sursă | Science On 2021, clasele 11-12 |
Autor | Tamio-Vesa Nakajima | Adăugată de | |
Timp execuţie pe test | 1.5 sec | Limită de memorie | 268435 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Arbquery
Manuela are un arbore cu N noduri, unde fiecare muchie are câte o lungime. Un lanţ este o secvenţă de noduri distincte , astfel încât să existe câte o muchie între oricare două noduri adiacente. Numim lungimea unui lanţ
suma lungimilor muchiilor care unesc nodurile adiacente din drum. Pentru fiecare muchie (x, y) fie d(x, y) suma lungimilor tuturor lanţurilor care conţin muchia de la x la y.
Manuela are Q interogări, fiecare de forma unui lanţ . Ea vrea să afle suma
% 109+ 7.
Date de intrare
Primul rând al fişierului de intrare arbquery.out conţine numărele N şi Q. Urmează N - 1 rânduri, fiecare conţinând trei valori x, y, l, ce indică existenţa unei muchii de la x la y cu lungimea l. Urmează apoi Q linii, fiecare conţinând două valori x, y, ce reprezintă o interogare asupra lanţului unic de la x la y.
Date de ieşire
Fişierul de ieşire arbquery.out conţine răspunsurile celor Q interogări, în ordine.
Subtaskuri
- Subtask 1 (10 puncte)
- N, Q ≤ 20.
- Oricare muchie are lungimea cel mult 105.
- Subtask 2 (30 puncte)
- N, Q ≤ 2.000.
- Oricare muchie are lungimea cel mult 105.
- Subtask 3 (10 puncte)
- N, Q ≤ 100.000.
- Oricare nod are cel mult 2 muchii incidente.
- Oricare muchie are lungimea cel mult 105.
- Subtask 4 (10 puncte)
- N, Q ≤ 100.000.
- Cel mult un nod are mai mult de 1 muchie incidentă.
- Oricare muchie are lungimea cel mult 105.
- Subtask 5 (40 puncte)
- N, Q ≤ 100.000.
- Oricare muchie are lungimea cel mult 105.
Exemplu
arbquery.in | arbquery.out |
---|---|
3 3 1 2 1 2 3 100 1 2 2 3 1 3 | 102 201 303 |
Observăm că sunt trei lanţuri, 1 - 2 de cost 1, 2 - 3 de cost 100 şi 1 - 2 - 3 de cost 101. Astfel d(1, 2) = 102, d(2, 3) = 201. Astfel rezultatul pentru 1, 2 este d(1, 2) = 102, pentru 2, 3 este d(2, 3) = 201, şi pentru 1, 3 este d(1, 2) + d(2, 3) = 303.