1 Sortiere G=(V,E,c) topologisch;
2 DIST[s]=0;
3 forall(v:V\{s}){
4 DIST[v]=infty;
5 }
6 U={v|v:V mit num(v)<n};
7 while(!U.Empty) {
8 Wähle und streiche Knoten u:U mit kleinstem num-Wert;
9 forall(e=(u,v):E) {
10 if(DIST[v]>DIST[u]+c(u,v)) {
11 DIST[v]=DIST[u]+c(u,v);
12 }}}