var a,s:array[1..100,1..100]of longint; i,j,k,n:longint; function min(i,j:longint):longint; begin if i>j then min:=j else min:=i; end; begin readln(n); for i:=1 to n do for j:=1 to n do read(a[i,j]); for i:=1 to n do for j:=1 to n do if a[i,j]=0 then s[i,j]:=maxlongint div 3 else s[i,j]:=a[i,j]; for k:=1 to n do for i:=1 to n do for j:=1 to n do s[i,j]:=min(s[i,j],s[i,k]+s[k,j]); for i:=1 to n do begin for j:=1 to n do if i=j then write('0 ') else if s[i,j]=maxlongint div 3 then write('-1 ') else write(s[i,j],' '); writeln; end; end. /************************************************************** Problem: 2166 User: admin Language: Pascal Result: Wrong Answer ****************************************************************/