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);
				}
			}
		}
	}
}