for each vertex u ∈ G.V - {s}
u.d = ∞
u.pred = null
u.done = false
u.timesRelaxed = 0
s.d = 0
Q = G.V
while Q ≠ ∅
u = Q.extractMin()
u.done = true
for each v ∈ G.Adj[u]
Relax(u,v)
if u.d + G.edge(u,v).w < v.d
v.d = u.d + G.edge(u,v).w
v.pred = u
v.timesRelaxed += 1