В программу вводится количество городов Q, и в 2 массива (XC и YC) вводятся координаты городов.
Нужно написать программу которая бы считала как нужно соединить города дорогами так, что бы сумма длин дорог была наименьшей.
вот что я смог написать
uses crt;
const Qmax=50;
type graf=array [1..Qmax,1..Qmax] of integer;
tyMas= array [1..Q] of integer;
var i,j,Q,k:integer;
ML,R:graf;
XC,YC,Mas:tyMas;

procedure MiEl(Mos:tyMas; N:integer);

var Min,Im:integer;

begin
Im:=1;
Min:=Mos[Im];
for k:=1 to N do
if Min>Mos[k] do begin Im:=k; Min:=Mos[Im]; end;
Mos[N+1]:=Im;
end;

Begin
writeln('Vvedite kolichestvo gorodov')
read(Q);
writeln('Vvedite koordinaty gorodov');
for i:=1 to Q do read(XC[I],YC[I]);
For i:=1 to Q do
For j:=1 to Q do begin
ML[i,j]:=abs(XC[I]-XC[j])+abs(YC[I]-YC[j]);
if ML[i,j]=0 then ml[I,j]:=maxint;
end;
for i:=1 to Q do begin
for J:=1 to Q do Mas[J]:=ML[i,j];
MiEl(Mas,Q);
R[I,1]:=i;
R[I,2]:=Mas[Q+1];
end;
for i:=1 to Q do
if R[I,1]=R[R[I,2],2] then
R[R[I,2],1]:=0;
writeln('Dorogi:')
for i:=1 to Q do
if R[i,1]<>0 then writeln(R[I,1],' ',R[I,2]);
end.


осталось только дописать проверку получившегося графа на связность wacko.gif , кто нибудь может помочь??