Pagini recente » Cod sursa (job #2971841) | Cod sursa (job #1987226) | Borderou de evaluare (job #1567698) | Cod sursa (job #981739) | Cod sursa (job #245465)
Cod sursa(job #245465)
program dijksctra;
type t1=array[1..10000, 1..3] of longint; t2=array[1..10000] of integer;
t3=array[1..10000] of longint;
var G:t1; stare,sursa:t2; dist:t3;
fin,i,j,nn,start,lung,finish,n,min,num,p,cer:longint;
f,g1:text;
begin
assign(f, 'dijkstra.in');
assign(g1, 'dijkstra.out');
reset(f);
rewrite(g1);
readln(f,nn, n);
start:=1;
for i:=1 to n do
readln(f, G[i,1], G[i,2], G[i,3]);
stare[start]:=1;
sursa[start]:=1;
for i:=1 to nn do dist[i]:=maxint;
dist[start]:=0;
for fin:=1 to nn do
begin
num:=start;
min:=maxint;
for i:=1 to nn do
if stare[i]=1 then
if dist[i]<=min then
begin
min:=dist[i];
num:=i;
end;
for i:=1 to n do
for j:=1 to 2 do
if G[i,j]=num then
begin
if j=2 then p:=1 else p:=2;
if stare[G[i,p]]=2 then break;
if dist[G[i,p]]>dist[num]+G[i,3] then
begin
dist[G[i,p]]:=dist[num]+G[i,3];
sursa[G[i,p]]:=G[i,j];
stare[G[i,p]]:=1;
end;
end;
stare[num]:=2;
end;
for finish:=2 to nn do
if dist[finish]<>maxint then write(g1, dist[finish], ' ') else
write(g1, '0 ');
close(g1); close(f);
end.