Pagini recente » Borderou de evaluare (job #121010) | Cod sursa (job #1813361) | Cod sursa (job #2559811) | Cod sursa (job #554110) | Cod sursa (job #1670301)
var a,b,c,d:array[1..250000] of longint;
n,m,i,j,k:longint;
procedure sw(var a,b:longint);
var c:longint;
begin
c:=a;
a:=b;
b:=c;
end;
procedure qs(st,dr:longint);
var i,j,k:longint;
begin
i:=st;
j:=dr;
k:=a[(i+j) div 2];
while i<j do begin
while a[i]<k do inc(i);
while a[j]>k do dec(j);
if i<=j then begin
if a[i]=a[j] then begin
if b[i]>b[j] then begin
sw(b[i],b[j]);
sw(c[i],c[j]);
end
end else begin
sw(a[i],a[j]);
sw(b[i],b[j]);
sw(c[i],c[j]);
end;
inc(i);
dec(j);
end;
end;
if st<j then qs(st,j);
if i<dr then qs(i,dr);
end;
begin
assign(input,'dijkstra.in');
assign(output,'dijkstra.out');
reset(input);
rewrite(output);
read(n,m);
for i:=1 to m do begin
read(a[i],b[i],c[i]);
if b[i]<a[i] then sw(a[i],b[i]);
end;
qs(1,m);
for i:=1 to m do begin
// writeln(a[i],' ',b[i],' ',c[i]);
if (d[b[i]]=0) or (d[b[i]]>d[a[i]]+c[i]) then
d[b[i]]:=d[a[i]]+c[i];
end;
for i:=2 to n do write(d[i],' ');
end.