program dijkstra; const MaxN=100; MaxL=1000000000; var G:array[1..MaxN,1..MaxN] of longint; N,M:longint; v0,v1:integer; BT:array[1..MaxN] of word; L:array[1..MaxN] of longint; procedure ReadData; var i,j:word; k,l:longint; begin readln(N,M); for i:=1 to N do begin for j:=1 to N do G[i,j]:=MaxL; G[i,i]:=0; end; for k:=1 to M do begin readln(i,j,l); G[i,j]:=l; end; readln(v0,v1); end; procedure EvalPath; var marked:array[1..MaxN] of boolean; i,i0:word; best:longint; begin for i:=1 to N do begin BT[i]:=v0; L[i]:=G[v0,i]; marked[i]:=false; end; marked[v0]:=true; while not marked[v1] do begin best:=MaxL; for i:=1 to N do if (not marked[i]) and (L[i]<=best) then begin i0:=i; best:=L[i] end; marked[i0]:=true; for i:=1 to N do if (not Marked[i]) then if L[i0]+G[i0,i]