Cod sursa(job #1557884)

Utilizator MOSCRACIUN1543Nicolae MOSCRACIUN1543 Data 28 decembrie 2015 13:44:17
Problema Distante Scor 0
Compilator fpc Status done
Runda Arhiva de probleme Marime 1.12 kb
var i,j,r,n,m,s,t,a,b,c,k:integer;
    f,o:text;
    res:boolean;
    g:array [1..10] of boolean;
    ps:array [1..10000] of integer;
    matr:array [1..100,1..100] of integer;
Procedure Matrix();
var i,j,min:integer; 
begin
min:=32000;
for i:=1 to n do
  if ps[i]<>matr[s,i] then 
    
    for j:=1 to n do
      if (matr[j,i]<>0)and(matr[j,i]<min) then 
        begin
        matr[s,i]:=matr[s,j]+matr[j,i];
        min:=matr[s,i];  
        end;
end;

begin
res:=true;
  assign(o,'distante.out');
   rewrite(o);
 assign(f,'distante.in');
   reset(f);
     read(f,t);
      for i:=1 to t do
      begin
        read(f,n,m,s);
          for j:=1 to n do

            read(f,ps[j]);
              for r:=1 to m do 
                begin
                 read(f,a,b,c);
                  matr[a,b]:=c;
                 end;
                 Matrix();
          for k:=1 to n do
             if ps[k]=matr[s,k] then g[i]:=true else
                  begin g[i]:=false; break; end;
        end;
   for i:=1 to t do  
     if g[i]=true then writeln(o,'DA') else writeln(o,'NU');
  close(o);
end.