Определение вершин лежащих на максимальном пути.
задание:
Определить длину максимального пути для графа, заданного матрицей расстояний. Это я сделала, вот код:
program MDP; uses crt; var G,F1,F2,F3,F4,F5,F6,F7,F8,F9: set of byte; R,M,S,B: array [1..20] of array [1..20] of integer; Y: array [1..10] of integer; i,j,k,n,C,V: integer; begin clrscr; G:=[1,2,3,4,5,6,7,8,9]; F1:=[2,3,4]; F2:=[3,6]; F3:=[4,5]; F4:=[5,7]; F5:=[6,8]; F6:=[9]; F7:=[8,9]; F8:=[9]; F9:=[]; for i:=1 to 9 do for j:=1 to 9 do begin if j in F1 then R[1,j]:=1 else R[1,j]:=0; if j in F2 then R[2,j]:=1 else R[2,j]:=0; if j in F3 then R[3,j]:=1 else R[3,j]:=0; if j in F4 then R[4,j]:=1 else R[4,j]:=0; if j in F5 then R[5,j]:=1 else R[5,j]:=0; if j in F6 then R[6,j]:=1 else R[6,j]:=0; if j in F7 then R[7,j]:=1 else R[7,j]:=0; if j in F8 then R[8,j]:=1 else R[8,j]:=0; if j in F9 then R[9,j]:=1 else R[9,j]:=0; end; writeln('matrica smeznosti R->'); for i :=1 to 9 do begin for j:=1 to 9 do write(R[i,j],' '); writeln; end; for i:=1 to 9 do for j:=1 to 9 do begin if R[i,j]=1 then begin write('Vvedite ves dugi-> '); readln(V); S[i,j]:=V; end; end; writeln('matrica rasstoyanii L ->'); for i :=1 to 9 do begin for j:=1 to 9 do write(S[i,j],' '); writeln; end; for j:=1 to 9 do B[j,1]:=0; for i:=2 to 9 do for j:=1 to 9 do B[j,i]:=-100; j:=1; repeat j:=j+1; k:=0; for i:=1 to 9 do if S[i,j]>0 then begin k:=k+1; Y[k]:=B[j-1,i]+S[i,j]; end; C:=-100; {minus beskone4nost} for n:=1 to k do if Y[n]>C then C:=Y[n]; for i:=j to 9 do B[i,j]:=C; until j=9; writeln('opredelenie dliny maksimalnogo puti->'); for j:=1 to 9 do begin for i:=1 to 9 do write(B[j,i],' '); writeln; end; readln; End.
Но 2-ое задание: Найти вершины, лежащие на этом пути. Причем препод требует чтобы всё было "просто и понятно" - т.е. без флажков, goto, процедур и функций, а только с помощью массивов, циклов и на крайняк множеств (как в программе которую я написала). Сможете мне помочь? Буду очень благодарна!