Pagini recente » Cod sursa (job #3234078) | Cod sursa (job #3131271) | Cod sursa (job #2184346) | Cod sursa (job #2352377) | Cod sursa (job #149206)
Cod sursa(job #149206)
const inf=10000000;
type vec=array [1..2,1..500000] of longint;
vec2=array[0..50000] of longint;
var v:vec;
d,viz,t,nr,nr1:vec2;
i,j,n,m:longint;
procedure citire;
var a,b,c,i:longint;
begin
read(n,m);
nr[0]:=1;
for i:=1 to m do
begin
read(a,b,c);
inc(nr[a]);
inc(nr[b]);
end;
for i:=1 to n do
nr[i]:=nr[i]+nr[i-1];
nr1:=nr;
reset(input);
read(n,m);
for i:=1 to m do
begin
read(a,b,c);
v[1,nr1[a-1]]:=b;
v[2,nr1[a-1]]:=c;
inc(nr1[a-1]);
v[1,nr1[b-1]]:=a;
v[2,nr1[b-1]]:=c;
inc(nr1[b-1]);
end;
end;
procedure dijkstra(nod:integer);
var mini,min,i,j:longint;
begin
for i:=0 to n do
d[i]:=inf;
d[nod]:=0;
for j:=1 to n-1 do
begin
viz[nod]:=1;
for i:=nr[nod-1] to (nr[nod]-1) do
begin
if (d[v[1,i]]>d[nod]+v[2,i]) and (viz[v[1,i]]=0) then
begin
d[v[1,i]]:=d[nod]+v[2,i];
t[v[1,i]]:=nod;
end;
end;
min:=inf;
mini:=0;
for i:=1 to n do
if viz[i]=0 then
if min>d[i] then
begin
min:=d[i];
mini:=i;
end;
if mini=0 then break;
nod:=mini;
end;
end;
begin {main}
assign(input,'dijkstra.in');reset(input);
assign(output,'dijkstra.out');rewrite(output);
citire;
dijkstra(1);
for i:=2 to n do
if d[i]=inf then write(0,' ')
else write(d[i],' ');
close(input);
close(output);
end.