Cod sursa(job #1913255)

Utilizator mihaita_bogFilip-Dud Mihai mihaita_bog Data 8 martie 2017 12:20:44
Problema Ubuntzei Scor 20
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.22 kb
program bubuntzei;

var f:text;
    a:array[1..2000,1..2000] of integer;
    d,c,t:array[1..10000] of integer;
    s:array[0..10000] of boolean;
    m,n,i ,k :integer;




procedure citire;
var f:text;
    i,j,x,y,co:integer ;
begin
assign(f,'ubuntzei.in'); reset (f);
readln(f,n,m);
read(f,k);
for i:=1 to k do
  read(f,c[i]);
for i:=1 to n do
  for j:=1 to n do
    a[i,j]:=maxint;
for i:=1 to m do
begin
  readln(f,x,y,co);
  a[x,y]:=co;
  a[y,x]:=co;
end;
close(f);
end;


procedure init;
var   i:integer;
begin
for  i:=1 to n do
  d[i]:=a[1,i];
for i:=1 to n do
  if d[i]<maxint then
  begin
    t[i]:=1;
    t[1]:=-1;
  end;
s[1]:=true;
for i:=2 to n do
  s[i]:=false;
end;



procedure dijkstra;
var
     c,i,dmin,k:integer;
begin
for c:=1 to n-1 do
  begin
    dmin:=maxint;
    for i:=1 to n do
      if ((d[i]<dmin)and not(s[i])) then
      begin
        dmin:=d[i];
        k:=i;
      end;
    for i:=1 to n do
      if (d[i]>d[k]+a[k,i]) then
      begin
        d[i]:=d[k]+a[k,i];
        t[i]:=k;
      end;
    s[k]:=true;
  end;
end;








begin
citire;
init;
dijkstra;
assign(f,'ubuntzei.out');rewrite(f);
write(f,d[n]);
close(f);
end.