procedure floyed; begin for I := 1 to n do for j := 1 to n do if a[I, j] > 0 then p[I, j] := I else p[I, j] := 0; {p[I,j]表示I到j的最短路径上j的前驱结点} for k := 1 to n do {枚举中间结点} for i := 1 to n do for j := 1 to n do if a[i, k] + a[j, k] < a[i, j] then begin a[i, j] := a[i, k] + a[k, j]; p[I, j] := p[k, j]; end; end; //delphi/6607