Cod sursa(job #291749)

Utilizator mimarcelMoldovan Marcel mimarcel Data 30 martie 2009 12:33:38
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 1.07 kb
type matrice=array[1..100,1..100]of integer;
const max=1001;
var n,i,j:byte;
    l:integer;
    a:matrice;

procedure royfloyd(var a:matrice;n:byte);
var i,j,k:byte;
    l:integer;
begin
for k:=1 to n do
  for i:=1 to n do if i<>k then
    for j:=1 to n do if(j<>k)and(j<>i)then
      begin
      l:=a[i,k]+a[k,j];
      if l<a[i,j] then a[i,j]:=l;
      end;
end;

procedure afisare(var a:matrice;n:byte);
var i,j:byte;
    l:integer;
begin
for i:=1 to n do
  begin
  for j:=1 to n do begin
                   l:=a[i,j];
                   if l<>max then write(l,' ')
                             else write('0 ');
                   end;
  writeln;
  end;
end;

begin
assign(input,'royfloyd.in');
reset(input);
assign(output,'royfloyd.out');
rewrite(output);
readln(n);
for i:=1 to n do
  begin
  for j:=1 to n do begin
                   read(l);
                   if l=0 then a[i,j]:=max
                          else a[i,j]:=l;
                   end;
  readln;
  end;
royfloyd(a,n);
afisare(a,n);
close(input);
close(output);
end.