讨论 / 求纠错
星光流年 2012-05-10 05:06:00
点我顶贴 收藏 删除
var

n,p,a,b,i,j,q:longint;

w:array[0..200,0..200] of longint;

c,u,rd,cd:array[0..200] of longint;

begin

read(n,p);

for i:=1 to n do

read(c[i],u[i]);

for i:=1 to n do

for j:=1 to n do

w[i,j]:=-maxlongint;

fillchar(rd,sizeof(rd),0);

fillchar(cd,sizeof(cd),0);

for i:=1 to p do begin

read(a,b,w[a,b]);

rd[b]:=rd[b]+1;

cd[a]:=cd[a]+1;

end;

for i:=1 to n do

if rd[i]<>0 then c[i]:=-u[i];

for i:=1 to n do

if (rd[i]=0) and (cd[i]>0) and (c[i]<>0) then

for j:=1 to n do

if w[i,j]<>-maxlongint then begin

c[j]:=c[j]+c[i]*w[i,j];

rd[j]:=rd[j]-1;

end;

q:=0;

for i:=1 to n do

if (cd[i]=0) and (rd[i]=0) and (c[i]>0) then begin

writeln(i,' ',c[i]);q:=1;

end;

if q=0 then write('NULL');

end.

用拓扑做

第三个和第八个点 答案是6 1 程序出的是Null.

#1 星光流年@2012-05-10 05:06:00
回复 删除

话说就没写过图的题,第一次就碰壁....

查看更多回复
提交回复