讨论 / 那位大牛帮忙看下啊。始终两组不过
建小建 2012-09-19 05:56:00
点我顶贴 收藏 删除
测试结果1: 通过本测试点|有效耗时218ms

测试结果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.

查看更多回复
提交回复