Cod sursa(job #929052)
program dijkkk;
const infinit=2000000001;
var v:array[1..3,1..250001]of longint;
a:array[1..50001]of longint;
n,m:longint;
f,g:text;
intrare,iesire:array[1..300000]of char;
procedure initializare;
var i:longint;
begin
readln(f,n,m);
for i:=1 to m do read(f,v[1,i],v[2,i],v[3,i]);
end;
procedure dijk;
var i:longint; k:longint;
begin
a[1]:=0; for i:=2 to n do a[i]:=infinit;
k:=1;
while k<>0 do
begin
k:=0;
for i:=1 to m do
if a[v[2,i]]>a[v[1,i]]+v[3,i] then
begin
a[v[2,i]]:=a[v[1,i]]+v[3,i];
inc(k);
end;
end;
end;
procedure afisare;
var i:longint;
begin
for i:=2 to n do if a[i]=infinit then write(g,'0 ')
else write(g,a[i],' ');
end;
begin
assign(f,'dijkstra.in'); reset(f); settextbuf(f,intrare);
assign(g,'dijkstra.out');rewrite(g); settextbuf(g,iesire);
initializare;
dijk;
afisare;
close(f);close(g);
end.