Cod sursa(job #327961)

Utilizator levap1506Gutu Pavel levap1506 Data 30 iunie 2009 17:06:36
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.75 kb
program floyd;
 var a,b:text;
  i,j,k,x:integer;
  z:array[1..100,1..100] of integer;
  function min(i,j:longint):longint;
   begin
    if i>j then min:=j else min:=i;
   end;
  begin
   assign(a,'royfloyd.in');
   assign(b,'royfloyd.out');
   reset(a);
   Readln(a,k);
   rewrite(b);
   for i:=1 to k do
    begin
     for j:=1 to k do
     begin
      Read(a,z[i,j]);
      if z[i,j]=0 then z[i,j]:=maxint;
     end;
     Readln(a);
    end;
   for x:=1 to k do
    for i:=1 to k do
     for j:=1 to k do
      z[i,j]:=min(z[i,j],z[i,x]+z[x,j]);
     for i:=1 to k do
      begin
      for j:=1 to k do
       if (z[i,j]=maxint) or (i=j) then Write(b,0,' ') else Write(b,z[i,j],' ');
      Writeln(b);
     end;
     close(b);
  end.