Witam, czy mógłby mi ktoś pomóc z uzyskaniem z tego kodu drogi "po wierzcholkach"?
Trasy z poczatkowego zrodla do skrajnych wierzcholkow obliczają się prawidłowo, aczkolwiek nie mam pomysłu jak tutaj uzyskać drogę, która trzeba przejść żeby taka odleglosc uzyskać.
https://pastebin.pl/view/42bfce20 kod całego programu.
funkcja dijkstra zaczyna się od 63 linii, do 121.
Pozdrawiam.
Dijkstra uzyskanie drogi po wierzchołkach
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2
0
- Rejestracja: dni
- Ostatnio: dni
1
Masz tablice odleglosci. Musisz miec jeszcze tablice poprzednikow.
- Rejestracja: dni
- Ostatnio: dni
- Postów: 2
0
@stivens: Czy mógłbyś bardziej rozjaśnić temat?
Próbowałem stworzyć vector<vector<string>> dla którego zapisywać w poszczególnych wierszach trasy, ale nie potrafię zrozumieć jak z tego kodu wyciągać miasta dla danej trasy :/
- Rejestracja: dni
- Ostatnio: dni
0
Nie czytalem Twojego kodu wiec nie odniose sie bezposrednio do niego.
"krok" w Dijkstrze wyglada tak:
nowa_odleglosc = | start -> przetwarzany_wierzcholek -> v |
jesli nowa_odleglosc jest mniejsza_niz najkrotsza_odleglosc[v]:
najkrotsza_odleglosc[v] = nowa_odleglosc
zeby wyznaczyc trase to trzeba dolozyc zapamietywanie poprzednika:
nowa_odleglosc = | start -> przetwarzany_wierzcholek -> v |
jesli nowa_odleglosc jest mniejsza_niz najkrotsza_odleglosc[v]:
najkrotsza_odleglosc[v] = nowa_odleglosc
poprzednik[v] = przetwarzany_wierzcholek
Zeby wyznaczyc trase to powtarasz:
- Wyciagnij poprzednik wierzcholka i przejdz do niego
- Jesli jestes na starcie to zakoncz dzialanie, wpp. powtorz od 1