测试结果2: 通过本测试点|有效耗时281ms
测试结果3: 测试结果错误.错误结果为:NULL
正确结果应为:6 1
测试结果4: 通过本测试点|有效耗时156ms
测试结果5: 通过本测试点|有效耗时172ms
测试结果6: 通过本测试点|有效耗时172ms
测试结果7: 通过本测试点|有效耗时171ms
测试结果8: 测试结果错误.错误结果为:NULL
正确结果应为:6 1
测试结果9: 通过本测试点|有效耗时172ms
测试结果10: 通过本测试点|有效耗时172ms
提交代码: view sourceprint?01.program shenjingwangluo;
var i,j,n,p,x,y,k:longint;
ff:boolean;
d,e,w:array[0..1000,0..1000]of int64;
t,ans,u:array[0..1000]of int64;
v:array[0..1000]of boolean;
function find:boolean;
var i:longint;
begin
fillchar(t,sizeof(t),0);
find:=false;
for i:=1 to n do
if (not v[i])and(d[i,0]=0)and(e[i,0]>0) then begin
inc(t[0]);
t[t[0]]:=i;
find:=true; v[i]:=true;
end;
end;
begin
read(n,p);
for i:=1 to n do readln(ans[i],u[i]);
for i:=1 to p do begin read(x,y);readln(w[x,y]);
inc(d[y,0]);
inc(e[x,0]);
e[x,e[x,0]]:=y;
end;
while find do begin
for i:=1 to t[0] do
for j:=1 to e[t[i],0] do begin
dec(d[e[t[i],j],0]);
ans[e[t[i],j]]:=ans[e[t[i],j]]+(w[t[i],e[t[i],j]]*ans[t[i]])
end;
for i:=1 to n do if (d[i,0]=0) then dec(ans[i],u[i]);
end; for i:=1 to n do
if (e[i,0]=0)and(ans[i]>0) then
begin
ff:=true;
break;
end;if ff then
for i:=1 to n do
if (e[i,0]=0 )and(ans[i]>0 ) then writeln(i,' ',ans[i]) else
else writeln('NULL');
end.