Cod sursa(job #590657)
Uses crt;
var a:array[1..100,1..100] of word;
n:byte;
f:text;
Procedure citire;
var i,j:byte;
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);
end;
Procedure Scrie;
var i,j:byte;
begin
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;
Procedure royfloyd;
var i,j,k:byte;
begin
for k:=1 to n do
for i:=1 to n do
for j:=1 to n do
if (i<>j) and (a[i,k] > 0) and (a[k,j]>0) and ((a[i,j] = 0) or (a[i,k] + a[k,j] < a[i,j])) then
a[i,j]:=a[i,k] + a[k,j];
end;
begin
Citire;
royfloyd;
Scrie;
end.