星光流年 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.