Witam, napisałem następującą funkcje, na podstawie algorytmu, jaki znalazłem w necie, ale nie wiem co mam w nim źle. Funkcja add dodaje mi element do kolejki priorytetowej, funkcja del zwraca pierwszy element z tej kolejki i go usuwa z niej. Bardzo proszę o pomoc. Pozdrawiam
void Dijkstra(int **&tab, int *&parents,int *&dist,int p,int s,int ile){
dist[s]=0;
add(s);
for (int i=0;i<ile;i++){
if (i!=p){
parents[i]=-1;
dist[i]=999;
add(i);
}
}
while (Head){
p=del();
for (int i=0;i<ile;i++){
if (tab[p][i]){
int v=tab[p][i];
if ((dist[p]+tab[p][v])<dist[v]){
dist[v]=dist[p]+tab[p][v];
parents[v]=p;
add(v);
}
}
}
}
}