Witam, mam do napisania algorytm wyszukiwania najkrótszej drogi w grafie, graf mam pobrany z pliku w formie (a,d,b) gdzie d to odległość między wierzchołkami a i b (dł. krawędzi). Mam taką strukturę:

class Krawedz
{
  public:
	
	Wierzcholek * idA;
	Wierzcholek * idB;
	float dlugosc;
	
	Krawedz(Wierzcholek * idA, Wierzcholek * idB, float dlugosc)
	{
		this->idA = idA; 
		this->idB = idB;
		this->dlugosc = dlugosc;
	}
};

class Wierzcholek
{
  public:
	int identyfikator;
	
	Wierzcholek(int identyfikator)
	{
		this->identyfikator = identyfikator;
	}
};


//GRAF SKIEROWANY 
class Graf
{
  private:
	vector <Wierzcholek*> tablica_wierzcholkow;  
	vector <Krawedz*> tablica_krawedzi;
	float odleglosc;
	
  public:	
	
	Graf()
	{
		this->odleglosc = 0;
	}
	
	void dodaj_wierzcholek(int identyfikator);
	
	bool dodaj_krawedz(int idA, int idB, float dlugosc);
	
	void convert(int idA, int idB); //konwert integerow na odpowiednie obiekty Wierzcholkow (znajduje obiekt o identyfikatorze idA, idB
	
	vector <Krawedz*> pobierz_krawedzie();
	
	vector <Wierzcholek*> pobierz_wierzcholki();

	float pobierz_najkrotsza_droge();

	
private:
  
	//Pobieranie sasiadow
  	vector <Wierzcholek*> pobierz_sasiadow(Wierzcholek * wierzcholek);
	
	//pseudo dijkstra tutaj ma byc ten dijkstra
	void odleglosc_AB(Wierzcholek * A, Wierzcholek * B);
	
	//dlugosc krawedzi
	float pobierz_dlugosc_krawedzi(Wierzcholek * A, Wierzcholek * B);

};

Wszystkie metody prócz tej najważniejszej dijkstry mam zaimplementowane. Powie ktoś jak to ugryźć?