Realizacja algorytmu poprzez kopiec

0

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

0

Gro tego zadania to właśnie stworzenie tego kopca.
Sam Dijksta to przecież kilka wierszy (jeżeli jest więcej to wywal do kosza i zacznij od początku).

1 użytkowników online, w tym zalogowanych: 0, gości: 1