Cod sursa(job #841788)

Utilizator RusuAlexeiRusu Alexei RusuAlexei Data 24 decembrie 2012 22:08:19
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.73 kb
program roy_floyd;
  var f:text;
      n,i,j,k:byte;
      a:array [1..100,1..100] of longint;
begin
  assign(f,'royfloyd.in');
  reset(f);
  readln(f,n);
  for i:=1 to n do
    begin
      for j:=1 to n do read(f,a[i,j]);
      readln(f);
    end;
  close(f);
  for k:=1 to n do
    for i:=1 to n do
      for j:=1 to n do
        if (a[i,j]=0)and(a[i,k]<>0)and(a[k,j]<>0) then a[i,j]:=a[i,k]+a[k,j]
           else if (a[i,j]<>0)and(a[i,k]<>0)and(a[k,j]<>0)then
               if a[i,j]> a[i,k]+a[k,j] then a[i,j]:=a[i,k]+a[k,j];
  for i:=1 to n do a[i,i]:=0;
  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.