Pagini recente » Cod sursa (job #2502003) | Cod sursa (job #2141169) | Cod sursa (job #890502) | Cod sursa (job #2726646) | Cod sursa (job #1615581)
program dijkstra;
const pinfinit=maxint;
type mat_c=array[1..30000,1..30000] of integer;
var a:mat_c;
s,t:array[1..50000] of integer;
d:array[1..50000] of integer;
n,m,i,j,r,poz,min:integer;
f,g:text;
procedure citire;
var m,x,y,z:integer;
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 a[i,j]:=0 else a[i,j]:=pinfinit;
for i:=1 to m do begin
readln(f,x,y,z);
a[x,y]:=z;
end;
close(f);
end;
begin
citire;
assign(g,'dijkstra.out'); rewrite(g);
r:=1;
s[r]:=1;
for i:=1 to n do
begin
d[i]:=a[r,i];
if i<>r then
if d[i]<pinfinit then t[i]:=r;
end;
for i:=1 to n-1 do
begin
min:=pinfinit;
for j:=1 to n do
if s[j]=0 then
if d[j]<min then
begin
min:=d[j]; poz:=j;
end;
s[poz]:=1;
for j:=1 to n do
if s[j]=0 then
if d[j]>d[poz]+a[poz,j] then
begin
d[j]:=d[poz] + a[poz,j];
t[j]:=poz;
end;
end;
for i:=2 to n do
if d[i]<> pinfinit then
write(g,d[i],' ') else write (g,'0 ');
close(g);
end.