Cod sursa(job #1363685)

Utilizator mariusadamMarius Adam mariusadam Data 27 februarie 2015 10:00:13
Problema Distante Scor 30
Compilator fpc Status done
Runda Arhiva de probleme Marime 0.89 kb
program distante;
var     d:array[1..50000] of longint;
        n,m,i,j,cost,k,x,y,t,s:longint;
        ok:boolean;
        f,g:text;

begin
 assign(f,'distante.in'); reset(f);
 assign(g,'distante.out'); rewrite(g);
 readln(f,t);
 for i:=1 to t do
 begin
        readln(f,n,m,s);
        for j:=1 to n do
                read(f,d[j]);
        ok:=true;
        if d[s]<>0 then
                 ok:=false
        else
                for k:=1 to m do
                begin
                        readln(f,x,y,cost);
                        if (d[x]+cost<d[y])or(d[y]+cost<d[x]) then
                        begin
                                ok:=false;
                                break;
                        end;
                end;
        if ok then
                writeln(g,'DA')
        else
                writeln(g,'NU');
 end;
 close(f);
 close(g);
end.