FLOYD-WARSHALL''(W, n) D^(0) = W let Π^(0) be a new n × n matrix for i = 1 to n for j = 1 to n if w_{ij} < ∞ and i != j π^(0)_{ij} = i else π^(0)_{ij} = NIL for k = 1 to n let D^(k) = (d^(k)_{ij}),Π^(k) = (π^(k)_{ij}) be new n × n matrices for i = 1 to n for j = 1 to n if d^(k-1)_{ij} > d^(k-1)_{ik} + d^(k-1)_{kj} d^(k)_{ij} = d^(k-1)_{ik} + d^(k-1)_{kj} π^(k)_{ij} = π^(k-1)_{kj} else d^(k)_{ij} = d^(k-1)_{ij} π^(k)_{ij} = π^(k-1)_{ij} return D^(n), Π^(n)
FLOYD-WARSHALL'''(W, n) D^(0) = W for k = 1 to n let D^(k) = (d^(k)_{ij}),Φ^(k) = (ϕ^(k)_{ij}) be new n × n matrices for i = 1 to n for j = 1 to n if d^(k-1)_{ij} > d^(k-1)_{ik} + d^(k-1)_{kj} d^(k)_{ij} = d^(k-1)_{ik} + d^(k-1)_{kj} ϕ^(k)_{ij} = k else d^(k)_{ij} = d^(k-1)_{ij} d^(k)_{ij} = ϕ^(k-1)_{ij} return D^(n), Φ^(n)
// 这个函数用来打印除了起点s和终点t以外的所有点。 AUX-PRINT-PATH(Φ, W, n, s, t) if ϕ_{st} == NIL return x = ϕ_{st} AUX-PRINT-PATH(Φ, W, n, s, x) print x AUX-PRINT-PATH(Φ, W, n, x, t)
PRINT-ALL-PAIRS-SHORTEST-PATH(Φ, W, n, s, t) if ϕ_{st} == NIL and w_{st} == ∞ print "no path from" i "to" j "exists" else if s == t print s else print s AUX-PRINT-PATH(Φ, W, n, s, t) print t