Dafür berechnest du von Knoten S aus zuerst die kürzesten Distanzen (= kürste Anzahl T Schritte) zu allen anderen Knoten mit Dijkstra.
Das klingt für mich aber nicht optimal, da du hierfür Knoten mehrfach durchläufst.
------A------
/ \
S- -C
\ /
------B------
Um die Distanz zu C zu berechnen müsstest du A und B durchlaufen. A und B müsstest du nochmal durchlaufen um die Distanz zu diesen beiden Knoten selbst zu berechnen.
Das optimale Vorgehen dürfte doch sein, alle von S erreichbaren Knoten zu durchlaufen, diese dabei in S zu speichern und diese schon gespeicherten bei einem weiteren Treffer zu updaten.
Wenn ein Update notwendig war(wegen einer kürzeren Distanz) diesen Knoten nochmal nach unten durchtraversieren, sonst weitermachen mit dem Nächsten.
------A------ ------D------
/ \ / \
S- -C- -F - G
\ / \ /
------B------ ------E------
\ /
---------------H---------------
Von S aus:
A, C, D, F, G, E, F(schon vorhanden, gleiche Tiefe - kein Update notwendig), B, C(schon vorhanden, gleiche Tiefe - kein Update notwendig -> weiter mit nächstem Knoten), G, F(schon vorhanden, andere Tiefe - update), G(update)