Piszę program na algorytm Dijkstry i mam taki przepis :
[...] wybierz ze zbioru Q wierzchołek o indeksie i, dla którego wartość D[i] będzie najmniejsza dodaj wierzchołek i do zbioru S [...]
Mam vector D
, no i powiedzmy ze obuduję na nim ten kopiec, jednak mogę zdejmować z niego te elementy, ktore nalezą tez do zbioru Q
.
Powiedzmy ze mam klase
class Droga {
public:
int odl,wierz,q; // odl- odleglosc wierz - do ktorego wierzcholka // q=0 nie ma w 1, q=1 - jest w q
};
Czyli stworzę sobie vector<Droga> D
, gdzie bede wkladał poszczegolne połączenia, ale oprocz tego ze obuduje na tym kopiec to mam zdejmowac najmniejsze, ktorych wartosc pola q=1
...
Teraz takie pytanie jak to zrobić, jaki kopiec zastosowac, bo ten z stl'a, cos mi szwankuje. Nie potrafię tego rozgryzc, a algorytm calosciowo juz mam, bo dla sortowania wektora babelkowo dziala, jednak wiadomo tutaj chodzi o zlozonosc czasową. Prosilbym o gotowy kod ktory to robi :)
dodanie znaczników <quote> i <code class="cpp"> - furious programming