program poisk_min; {$APPTYPE CONSOLE} var a:array[1..100,1..100] of integer; nmin,min,i,j,k,l,n,s:integer; c:array [1..100]of integer; f1,f2:text; function f(nn,vv:integer):boolean; var pr:boolean; i:integer; begin pr:=true; for i:=1 to nn do if vv=c[i] then pr:=false; f:=pr; end; begin assign(f1,'graph.dat');reset(f1);assign(f2,'graph.sol');rewrite(f2); write('N='); readln(n); for i:=1 to n do for j:=i+1 to n do begin a[i,j]:=random(50)+1;a[j,i]:=a[i,j]; end; i:=1;c[i]:=1; while i<=n do begin min:=maxint; for j:=1 to n do if (a[c[i],j]c[i])and (f(i,j)) then begin min:=a[c[i],j];nmin:=j;end; i:=i+1; c[i]:=nmin; end; for i:=1 to n-1 do s:=s+a[c[i],c[i+1]]; s:=s+a[c[n],c[1]]; close(f1); writeln(f2,n); for i:=1 to n do begin for j:=1 to n-1 do write(f2,a[i,j]:3); writeln(f2,a[i,n]:3); end; writeln(f2,'-------------------'); for i:=1 to n-1 do write(f2,c[i],' ' ); writeln(f2,c[n] ); writeln(f2,s); close(f2); end.