Algoritm Dijkstra Pascal

Embed Size (px)

DESCRIPTION

Algoritm Dijkstra Pascal

Citation preview

Algoritmul lui Dijkstra const inf=1000000; var l:array[1..20,1..20] of longint; n,vs,v,i,j:byte; d:array[1..20] of longint; p:array[1..20] of byte; s:array[1..20] of boolean; min:longint; procedure citire; var f:text; m,i,j,x,y:byte; z:longint; begin assign(f,'graf.txt'); reset(f); read(f,n,m,vs); for i:=1 to n do for j:=1 to n do l[i,j]:=inf; end; for i:=1 to m do begin read(f,x,y,z); l[x.y]:=z; end; end; procedure drum (v:byte); begin if vvs then drum(p[v]); write(v,' '); end; begin citire; for i:=1 to n do begin d[i]:=l[vs,i]; if d[i]inf then p[i]:=vs; s[i]:=false; end; s[vs]:=true; for i:1 to n-2 do begin min:=inf+1; for i:=1 to n do if not s[j] and (d[j]d[v]+l[v,j]) then begin d[j]:=d[v]+l[v,j]; p[j]:=v; end; end; for i:=1 to n do if ivs then

if d[i]=inf then writeln('nu exista drum de la ',vs' la ',i); else begin write('lungimea drumului minim de la ',vs,' la ',i,' est e ',d[i],' iar drumul este '); drum(i); writeln; end; end.