"If you think it’s simple, then you have misunderstood the problem" (Bjarne Stroustrup)
Jeffrey dorește să își extindă magazinul său online și în România. Pentru a asigura obsesia pentru satisfacția clienților, el stabilește o strategie de livrare a comenzilor eficientă, automată, și într-un timp cât mai scurt.
România este formată din orașe conectate între ele, existând un traseu unic între oricare două orașe. Un traseu este o secvență de drumuri care conectează două orașe, astfel încât niciun drum nu se repetă. În total, există drumuri bidirecționale care conectează orașele.
Fiecare drum are și un cost asociat. Echipa lui Jeffrey a creat o listă de perechi de orașe între care se va circula foarte des pentru livrarea coletelor. Definim costul unei perechi de orașe ca fiind suma costurilor drumurilor din traseul de la orașul la orașul . De asemenea, definim costul total ca fiind suma tuturor costurilor celor perechi de orașe date.
Jeffrey poate să aplice următorul tip de operație: selectează un drum cu un cost strict pozitiv și îi scade costul cu . Din motive de "frugality", această operație poate fi aplicată de cel mult ori, unde este un număr natural.
Cerință
Se cere să găsiți costul total minim ce poate fi obținut, după aplicarea de cel mult ori a operației menționate mai sus.
Date de intrare
Pe prima linie a fișierului de intrare se află un număr natural , reprezentând numărul de orașe.
Pe următoarele linii se află câte numere , și , reprezentând faptul că există un drum bidirecțional între orașele și , cu costul egal cu . Orașele sunt numerotate de la la .
Pe următoarea linie se află numerele și , reprezentând numărul de perechi de orașe, respectiv numărul de operații ce pot fi aplicate, urmând apoi linii care conțin fiecare câte două numere și reprezentând cele perechi de orașe.
Date de ieșire
Pe prima linie a fișierului de ieșire se va afla un singur număr, reprezentând costul total minim ce va putea fi obținut, modulo .
Restricții și precizări
- ,
- Operația de scădere a costului unui drum poate fi aplicată de mai multe ori pentru același drum, atât timp cât costul drumului nu devine un număr negativ.
- Pentru teste în valoare de de puncte se garantează că .
- Pentru alte teste în valoare de de puncte se garantează că .
- Pentru restul testelor în valoare de de puncte nu există restricții suplimentare.
Exemplu
amazon.in
5
1 0 4
0 2 3
1 3 4
1 4 4
3 5
2 4
1 4
3 4
amazon.out
10
Explicație
Putem alege să aplicăm operația de scădere a costului drumului pe drumul de la orașul la orașul de ori. Astfel, costul drumului va deveni .
Mai putem aplica încă o dată operația pentru drumul de la orașul la , micșorând costul acestuia la . Costul traseului între orașele și va fi suma costurilor drumurilor , și , adică . Costul traseului între orașele și va fi costul drumului , adică . Costul traseului între orașele și va fi suma costurilor drumurilor și , adică .
Astfel, costul total este .