This is a tightening of the upper bound d(v) on the shortest path weight from
s to v.
Maintain d(v) and pred(v) for each vertex v.
Relax(u, v, w)
if d(v) > d(u) + w(u,v)
then d(v) = d(u) + w(u,v)
pred(v) = u
; G = (V, E)
foreach v in V
pred(v) = NIL
d(s) = 0
Relaxing after Init-Single-Source will eventually
reach the shortest path weight and predecessor graph will be a shortest
path tree (assuming no negative-weight cycles).