Cod sursa(job #290477)

Utilizator mlazariLazari Mihai mlazari Data 27 martie 2009 23:28:19
Problema Floyd-Warshall/Roy-Floyd Scor 50
Compilator fpc Status done
Runda Arhiva educationala Marime 0.81 kb
Program RoyFloyd;
var n : byte;
    A : array[1..100,1..100] of integer;

procedure Citeste;
var Intrare : text;
    i,j : byte;
begin
  assign(Intrare,'royfloyd.in');
  reset(Intrare);
  readln(Intrare,n);
  for i:=1 to n do
   for j:=1 to n do read(Intrare,A[i,j]);
  close(Intrare);
end;

procedure Calculeaza;
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 (A[i,k]<>0) and (A[k,j]<>0) then
      if A[i,k]+A[k,j]<A[i,j] then A[i,j]:=A[i,k]+A[k,j];
end;

procedure Scrie;
var Iesire : text;
    i,j : integer;
begin
  assign(Iesire,'royfloyd.out');
  rewrite(Iesire);
  for i:=1 to n do begin
    for j:=1 to n do write(Iesire,A[i,j],' ');
    writeln(Iesire);
  end;
  close(Iesire);
end;

begin
  Citeste;
  Calculeaza;
  Scrie;
end.