Pagini recente » Cod sursa (job #188342) | Cod sursa (job #2884073) | Borderou de evaluare (job #303670) | Cod sursa (job #1707326) | Cod sursa (job #632031)
Cod sursa(job #632031)
program graff;
type mada=record
a,b,c:integer;
end;
var f,g:text;
n,m,i,j,min,poz:longint;
a1:array of array of integer;
v:array of mada;
s,d:array of integer;
begin
assign(f,'dijkstra.in'); reset(f);
assign(g,'dijkstra.out'); rewrite(g);
readln(f,n,m);
setlength(a1,n+1);
for i:=1 to n do
setlength(a1[i],n+1);
for i:=1 to n do
for j:=1 to n do
begin
a1[i,j]:=maxint;
a1[i,i]:=0;
end;
setlength(v,m+1);
for i:=1 to m do
begin
readln(f,v[i].a,v[i].b,v[i].c);
a1[v[i].a,v[i].b]:=v[i].c;
end;
{ for i:=1 to n do
begin
for j:=1 to n do
begin
write(g,a1[i,j],' ');
end;
writeln(g);
end; }
setlength(d,n+1);
setlength(s,n+1);
s[1]:=1;
for i:=1 to n do
begin
d[i]:=a1[1,i];
end;
for i:=1 to n-1 do
begin
min:=maxint;
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]+a1[poz,j] then
begin
d[j]:=d[poz]+a1[poz,j];
end;
end;
for i:=2 to n do
if d[i]=maxint then
write(g,0,' ')
else
write(g,d[i],' ');
{ for i:=1 to n do
if i<>1 then
if t[i]<>0 then
begin
drum(i);
end; }
close(f);
close(g);
end.