iau doar 20 pct (in rest WA si pe vreo 4-5 teste (din 25) iau TLE) si nu stiu de ce.
eu tin un min-heap cu nodurile in care se poate ajunge, ordonat dupa costul muchiei care duce in ele.
la fiecare valoare "q" citita iau din heap primul element cat timp costul e mai mic sau egal cu valoarea citita, si adaug in heap toti vecinii nodului/nodurilor extrase.
Am grija sa marchez nodurile "relaxate", si cum am marcat nodul n opresc algoritmul.
----
alta exprimare, poate mai clara:
la fiecare valoare "q" citita (intr-o anumita stare), exista:
- o submultime de noduri in care se poate ajunge (un vector u[] de 0 sau 1)
- o alta submultime de noduri: vecini ai primei submultimi (retinut ca un min-heap in functie de costul muchiei).
ca sa trec de la o stare la alta, iau din a 2a multime (din heap) elementele cu costul <= decat "q" si le adaug la prima multime. bine-nteles, reimprospatez tot-odata si heap-ul cu noile noduri si costuri.
----
ce gresesc?
PS:
daca citesc muchiile cu:
fgets(buf, 100, stdin);
sscanf(buf, "%d%d%d", &v1, &v2, &c);
dureaza mai mult decat:
scanf("%d%d%d", &v1, &v2, &c);
e normal?