Cod sursa(job #154415)

Utilizator dobreDobre Catalin Andrei dobre Data 11 martie 2008 10:28:01
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.85 kb
program RoyFloyd;
const fi='royfloyd.in';fo='royfloyd.out';
      INF=1000000;
var H:array[1..100,1..100]of longint;
    n:integer;
    f,g:text;
    ii,jj,cost:integer;
    i,j:integer;

procedure Floyd;
var i,j,k:integer;
begin
for k:=1 to n do
    for i:=1 to n do
        for j:=1 to n do
            if(i<>j)and(i<>k)and(j<>k) then
              if(H[i,k]+H[k,j]<H[i,j])then
                H[i,j]:=H[i,k]+H[k,j];
end;

begin
assign(f,fi);reset(f);
assign(g,fo);rewrite(g);
readln(f,n);
for i:=1 to n do begin
    for j:=1 to n do begin
     read(f,cost);
     H[i,j]:=cost;
     if cost=0 then H[i,j]:=INF;
     end;
     readln(f);
    end;
Floyd;
for i:=1 to n do begin
    for j:=1 to n do
        if H[i,j]=INF then write(g,'0 ')
           else write(g,H[i,j],' ');
    writeln(g);
    end;
close(g);
close(f);
end.