uses crt; var kohad: array[1..100] of string; kohti:integer; maatrix: array[1..100,1..100] of integer; dmass: array[1..100,1..3] of integer; procedure loeandmed; var f:text; koht:string; i,j,v:integer; begin assign(f,'kohad.txt'); reset(f); i:=0; while not eof(f) do begin inc(i); readln(f,koht); kohad[i]:=koht; kohti:=i; end; close(f); assign(f,'graafike.txt'); reset(f); while not eof(f) do begin readln(f,i,j,v); maatrix[i,j]:=v; maatrix[j,i]:=v; end; close(f); end; procedure kuva(algus,lopp:integer); var i:integer; begin writeln(kohad[algus],'st ',kohad[lopp],'sse on ',dmass[lopp,1], ' km.'); readkey; end; procedure dijkstra(algus, lopp:integer); var i,muutuja,m,alg:integer; begin for i:=1 to kohti do begin alg:=algus; dmass[i,1]:=maxint; dmass[i,2]:=0; dmass[i,3]:=0; end; dmass[algus,1]:=0; muutuja:=kohti; while muutuja<>0 do begin m:=maxint; for i:=1 to kohti do if (dmass[i,1]1) then begin m:=dmass[i,1]; algus:=i; end; dmass[algus,3]:=1; for i:=1 to kohti do if (dmass[i,1]>(dmass[algus,1]+maatrix[algus,i])) and (maatrix[algus,i]<>0) then begin dmass[i,1]:=dmass[algus,1]+maatrix[algus,i]; dmass[i,2]:=algus; end; dec(muutuja); end; kuva(alg,lopp); end; procedure kysi; var algus,lopp,i:integer; begin for i:=1 to kohti do writeln(i:2,' ',kohad[i]); writeln(''); Write('Sisesta alguspunkt: '); readln(algus); write('Sisesta läpppunkt: '); readln(lopp); dijkstra(algus, lopp); end; begin clrscr; loeandmed; kysi; end.