Cod sursa(job #146233)

Utilizator dascalu2Dascalu Andi FLorin dascalu2 Data 1 martie 2008 14:11:26
Problema Floyd-Warshall/Roy-Floyd Scor 100
Compilator fpc Status done
Runda Arhiva educationala Marime 0.73 kb
var m:array[1..100,1..100]of integer;
    n,k,i,j:longint;
function min(a,b:longint):longint;
begin
     if(a<b)then
     min:=a
     else
     min:=b;
end;

begin
assign(input,'royfloyd.in');
reset(input);
read(n);
for i:=1 to n do
    for j:=1 to n do
        read(m[i,j]);
close(input);
for k:=1 to n do
    for i:=1 to n do
        for j:=1 to n do
            if (m[i,k]<>0) and (m[k,j]<>0) and (i<>j) then
               if m[i,j]=0 then
               m[i,j]:=m[i,k]+m[k,j]
               else
               m[i,j]:=min(m[i,j],m[i,k]+m[k,j]);

assign(output,'royfloyd.out');
rewrite(output);
for i:=1 to n do
begin
     for j:=1 to n do
     write(m[i,j],' ');
     writeln;
end;
close(output);
end.