Das läuft so:
Init: alle x in s auf -1 bis auf des vom Startknoten.
Schleife: solange beim vorherigen durchlauf ein neuer weg (hier minnode) gefunden wurde:
minnode auf ungefunden, min auf MAXVALUE.
Jetzt alle Pfade, die von einem Knoten aus S ausgehen überprüfen.
Wenn ein neuer minimaler Weg dabei ist UND (!Wichtig!) er noch nixht in S ist → minnode/min entsprechend setzen.
s[minnode] = min
Nächster durchlauf.
Ich kann das irgendwie nicht besser erklären. Der sucht halt alle Paare (x,y) mit x in s, y nicht in s durch, nimmt den minimalen und trägt ihn ein.