uses crt;
var
v,l,x,y : byte;
graf1 : array[1..3 ,1..19] of integer;
graf2 : array[1..14,1..14] of byte;
sak,n,min : byte;
{ a,b,n:byte; }
Xs:byte;
{ min:byte; }
Tk:array[1..14]of boolean;
Qk:array[1..2,1..18]of byte;
Be:array[1..14,1..2]of byte;
begin
clrscr;
textbackground(white);
textcolor(green);
gotoxy(25,3);
write('Prima algoritms" ');
gotoxy(34,5);
write('39. variant');
gotoxy(33,10);
write('Press any key');
readkey;
repeat
clrscr;
gotoxy(22,8);
write('kol-vo vershin(mozhet bit' 9<n<16): ');
readln(v);
until (v>9)and(v<16);
repeat
gotoxy(24,14);
write('Kol-vo dug (mozhet bit' : 12<l<20): ');
readln(l);
until (l>12)and(l<20);
clrscr;
{ievadit Grafu-----------------------------------------------------}
gotoxy(1,5);
write('Vvedite spisok dug grafa sootvetstvenno (1 vershina dugi, 2 vershina dugi, ves dugi ');
for x:=1 to l do
begin
gotoxy(1,x+7);write('Ievadi ',x,'. loku : ');
gotoxy(21,x+7);readln(graf1[1,x]);
gotoxy(26,x+7);readln(graf1[2,x]);
gotoxy(31,x+7);readln(graf1[3,x]);
end;
{Rekini -----------------------------------------------------}
repeat
clrscr;
gotoxy(10,12);
write('vershina s kotoroj nachat' vypolnenie algoritma?:');
gotoxy(52,14);
readln(sak);
until (sak>0)and(sak<15);
for x:=1 to 15 do
Tk[x]:=false;
for x:=1 to 19 do
begin
Qk[1,x]:=0;
Qk[2,x]:=0;
end;
for x:=1 to 15 do
begin
Be[x,1]:=0;
Be[x,2]:=255;
end;
for x:=1 to v do
for y:=1 to v do
graf2[y,x]:=0;
for x:=1 to l do
begin
graf2[ graf1[1,x], graf1[2,x]]:=graf1[3,x];
graf2[ graf1[2,x], graf1[1,x]]:=graf1[3,x];
end;
{ I }
Xs:=sak; Tk[sak]:=true;
{ II }
for x:=1 to v do
if graf2[Xs,x]>0 then begin
Be[x,1]:=Xs;
Be[x,2]:=graf2[Xs,x];
end;
n:=1;
REPEAT
{ III }
min:=255;
for x:=1 to v do
if (Be[x,2]<min)and(Tk[ x ]=false) then
begin min:=Be[x,2]; Xs:=x; end;
Tk[Xs]:=true;
Qk[1,n]:=Be[Xs,1];
Qk[2,n]:=Xs;
n:=n+1;
{ IV }
for x:=1 to v do
if (graf2[Xs,x]>0)and(Tk[x]=false)and(Be[x,2]>graf2[Xs,x]) then
begin
Be[x,1]:=Xs;
Be[x,2]:=graf2[Xs,x];
end;
UNTIL n=v;
clrscr;
gotoxy(30,4); write('Minimal'nij karkas:');
for x:=1 to n-1 do
begin
gotoxy(35,x+6); write(x);
gotoxy(38,x+6); write('(',Qk[1,x],', ',Qk[2,x],')');
end;
repeat until keypressed;
readkey;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.