Documente Academic
Documente Profesional
Documente Cultură
Grafurilor
By Matraguna Mihai Last updated mart. 9, 2018
1
Share
Prezentarea generala
Algoritmul lui Dijkstra porneste de la un graf orientat si ponderat (fiecare muchie are
un cost). Dupa aceea, programatorul alege nodul de start, iar algoritmul va calcula
distanta minima de la nodul de start catre toate celalalte noduri.
Dupa executarea acestui algoritm, rezultatul va fi stocat intr-un vector „distanta” cu „N”
elemente. Unde distanta[i] va reprezenta drumul minim de la nodul nostru de start
catre nodul cu numarul i.
Problema Dijkstra – infoarena.ro
In continuare vom rezolva impreuna problema Dijkstra de pe infoarena.ro. Varianta pe
care urmeaza sa o abordam foloseste o coada de prioritati (heap-uri) pentru a obtine
punctajul maxim.
1 struct compara
2 {
3 bool operator()(int x, int y)
4 {
5 return D[x] > D[y];
6 }
7 };
8
9 priority_queue<int, vector<int>, compara> Coada;
priority_queue<> are 3 parametrii:
Primul paramestru este un obiect care construieste coada. In cazul nostru sunt
numere, asa ca am scris int
Al doilea parametru este structura in care adunam toate obiectele din coada, in
cazul nostru: un vector de int-uri
Ultimul parametru (care este optional) este o functie ce returneaza TRUE sau
FALSE in functie de interogarile noastre
Implementarea in C++
Algoritmul lui Dijkstra in C++
C++