Pagini recente » Cod sursa (job #3207816) | Cod sursa (job #260072) | Cod sursa (job #3224862) | Cod sursa (job #1483464) | Cod sursa (job #154847)
Cod sursa(job #154847)
program dijkstra;
const fi='dijkstra.in';fo='dijkstra.out';
type pnod=^nod;
nod=record
x:word;
cost:integer;
urm:pnod;
end;
var V:array[1..50001]of pnod;
d:array[1..50001]of longint;
c:array[1..3*50001]of word;
f,g:text;
n,m:longint;
ii,jj,cost:longint;
i,j:longint;
procedure add(i,j,cost:longint);
var p:pnod;
begin
p:=new(pnod);
P^.urm:=V[i];
P^.x:=j;
P^.cost:=cost;
V[i]:=P;
end;
procedure Ford;
var head,tail,ttail:longint;
p:pnod;
ii,cst:longint;
CT:longint;
begin
head:=1;tail:=1;ttail:=1;
c[head]:=1;
repeat
tail:=ttail;
p:=v[c[head]];
while p<>nil do begin
ii:=p^.x;
cst:=p^.cost;
CT:=d[c[head]]+cst;
if(d[ii]=0)or(CT<d[ii])then begin
d[ii]:=CT;
ttail:=ttail+1;
c[ttail]:=ii;
end;
p:=p^.urm;
end;
head:=head+1;
until head=ttail+1;
end;
begin
assign(f,fi);reset(f);
assign(g,fo);rewrite(g);
readln(f,n,m);
for i:=1 to m do begin
readln(f,ii,jj,cost);
add(ii,jj,cost);
end;
Ford;
for i:=2 to n do write(g,d[i],' ');
close(g);
close(f);
end.