Pagini recente » Cod sursa (job #2636005) | Cod sursa (job #794953) | Cod sursa (job #128344) | Istoria paginii utilizator/hegedus | Cod sursa (job #1628840)
Program dijkstra;
const inf=10000;
var s:array[0..5000] of boolean;
t,d:array[0..5000] of integer;
f:text;
n,m,i:integer;
cost:array[0..5000,0..5000] of integer;
procedure citire;
var i,j,x,y,c:integer; f:text;
begin
assign(f,'dijkstra.in');reset(f);
readln(f,n,m);
for i:=1 to n do
for j:=1 to n do
if i<>j then
cost[i,j]:=inf
else
cost[i,j]:=0;
for i:=1 to m do
begin
readln(f,x,y,c);
cost[x,y]:=c;
end;
close(f);
end;
procedure initializare(x:integer);
var i:integer;
begin
t[x]:=-1;
for i:=1 to n do
begin
if (i<>x) and (cost[x,i]<maxint) then
t[i]:=x;
d[i]:=cost[x,i];
end;
s[x]:=true;
end;
procedure dijkstra(x:integer);
var dmin,k,i:integer;
begin
for k:=1 to n-1 do
begin
dmin:=inf;
for i:=1 to n-1 do
if (d[i]<dmin) and (not s[i]) then
dmin:=d[i];
for i:=1 to n do
if d[i]>d[k]+cost[k,i] then
begin
d[i]:=d[k]+cost[k,i];
t[i]:=k;
end;
s[k]:=true;
end;
end;
BEGIN
CITIRE;
INITIALIZARE(1);
DIJKSTRA(1);
assign(f,'dijkstra.out');rewrite(f);
FOR I:=2 TO N DO
WRITE(f,d[i],' ');
close(f);
end.