Pagini recente » Cod sursa (job #2724433) | Cod sursa (job #318626) | Cod sursa (job #2757080) | Cod sursa (job #2138444) | Cod sursa (job #266900)
Cod sursa(job #266900)
type muchie=record
x,y,cost:longint;
end;
const q=2000000000;
var v:array[1..50001]of muchie;
d,tz:array[1..100001]of longint;
f,g:text;
t:byte;
n,poz,pozz,xp,z,m,i,s:longint;
modif:boolean;
procedure init;
begin
for i:=1 to m do begin
read(f,poz,pozz,s);
v[i].x:=poz;
v[i].y:=pozz;
v[i].cost:=s;
if poz=xp then d[pozz]:=s;
end;
for i:=1 to n do if (d[i]=0) and (i<>xp) then d[i]:=q;
end;
procedure bellford;
begin
repeat
modif:=false;
for i:=1 to m do begin
s:=d[v[i].x]+v[i].cost;
poz:=v[i].y;
if s<d[poz] then begin
d[poz]:=s;
modif:=true;
end;
end;
until not modif;
end;
function verif:boolean;
var ok:boolean;
begin
ok:=true;
for i:=1 to n do if d[i]<>tz[i] then begin
ok:=false;
break;
end;
verif:=ok;
end;
begin
assign(f,'distante.in');reset(f);
assign(g,'distante.out');rewrite(g);
read(f,t);
for z:=1 to t do begin
read(f,n,m,xp);
for i:=1 to n do read(f,tz[i]);
init;
bellford;
if verif then writeln(g,'DA')
else writeln(g,'NU');
end;
close(g);
end.