Vous êtes sur la page 1sur 3

cost inf=1000000; var l:array[1..20,1..20] of longint; n,v,vs,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; for i:=1 to m do begin read(f,x,y,z); l[x,y]:=z; end; end; procedure drum(v:byte); begin if v<>vs then drum(p[v]); write(v, ); end; begin clrscr; 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 min:=inf+1; for j:=1 to n do if not s[j] and (d[j]<min)then begin min:=d[j]; v:=j; end; s[v]:=true; for j:=1 to n do if not s[j] and (d[j]>d[v]+l[v,j]) then begin

d[j]:= d[j]>d[v]+l[v,j]; p[j]:=v; end; end; for i:=1 to n do if i<>vs then if d[i]=inf then writeln(nu exista drum de la vs,la,i) else begin write(lung drumului min de la ,vsla,i,este,d[i],iar drumul este); drum(i); writeln; end; end.

Vous aimerez peut-être aussi