program GrafPA; type Graf = object public constructor vytvor( velikostGrafu : integer ); function velikostGrafu() : integer; procedure vytvorHranu( u, v : integer, hodnota : real ); function pocetSousedu( vrchol : integer ) : integer; {vraci index n-teho souseda, kde n = 1 .. pocetSousedu} function vratSouseda( vrchol, n : integer ) : integer; function delkaHrany( u, v: integer ) : real; destructor smaz; end; function vlnaVGrafu( cil : integer, var g : Graf, delkyCest : array of real ) : real var i,j,soused,novadelka :integer; nejmensihodnota, posledniHotova :real begin posledniHotova := 0.0; while delkyCest[cil]<> posledniHotova do begin nejmensihodnota := maxReal; for i :=1 to g. velikostGrafu() do if delkyCest[i] = posledniHotova then for j:=1 to g.pocetsousedu(i) do begin soused:= g.vratsouseda(i,j); if delkyCest[soused] > posledniHotova then begin novadelka:= delkycest[i]+ g.delkahrany(soused,i); if novadelka