Cod sursa(job #295655)

Utilizator punkistBarbulescu Dan punkist Data 3 aprilie 2009 16:08:35
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.75 kb
var a:array[1..100,1..100] of longint;
    n:byte;

procedure Citire;
var f:text;
    i,j:integer;
begin
assign(f,'royfloyd.in');
reset(f);
readln(f,n);
for i:=1 to n do
 begin
  for j:=1 to n do
   begin
    read(f,a[i,j]);
   end;
 end;
close(f);
end;

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

procedure Scriere;
var i,j:byte;
    f:text;
begin
 assign(f,'royfloyd.out');
 rewrite(f);
 for i:=1 to n do
  begin
   for j:=1 to n do write(f,a[i,j],' ');
   writeln(f);
  end;
 close(f);
end;

begin
Citire;
RoyFloyd;
Scriere;
end.