Cod sursa(job #266468)

Utilizator philipPhilip philip Data 25 februarie 2009 17:03:45
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.76 kb
var i,j,k,n:byte;
    a:array[1..100,1..100] of integer;
    f,g:text;

procedure citire;
  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;
  end;

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

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

begin
  citire;
  roy;
  afis;
end.