Prim¶
Opis problemu¶
Implementacja¶
Opis implementacji¶
Na początku definiujemy strukturę edge
do reprezentacji krawędzi grafu (linia 8). Ponieważ mamy do czynienia z grafem ważonym, w strukturze przechowujemy trzy wartości:
- wierzchołek początkowy krawędzi - zmienna
from
(linia 9), - wierzchołek docelowy krawędzi - zmienna
to
(linia 10), - waga/długość krawędzi - zmienna
distance
(linia 11)
Dla ułatwienia definiujemy także konstruktor dla naszej struktury (linia 13). Ponieważ krawędzie chcemy przechowywać w kolejce priorytetowej, musimy także zdefiniować operator<
do porównywania krawędzi (linia 19). Warto tutaj zwrócić uwagę na to, że kolejka priorytetowa z stl jest typu max, co oznacza, że domyślnie zwracałaby nam krawędź o największej wadze. Ponieważ do algorytmu Prima potrzebujemy pobierać krawędzie o najmniejszej wadze najpierw, odwracamy porządek krawędzi podczas porównywania ich wagi (linia 20).