SOS~实在不明白

对着别人程序,题解无数次,实在不知道为什么WA。。
师兄说:“可能是因为你的代码打的比较丑吧!”
~~~~(>_<)~~~~
pascal
const
maxn=maxlongint div 4;
var
a:array[0..1500,0..1500] of longint;
f:array[0..1500,0..2] of longint;
w:array[0..1500] of longint;
n,i,j,k,m,x,root:longint;
function min(a,b:longint):longint;
begin
if a<b then min:=a
else min:=b;
end;
procedure dp(u:longint);
var
mm,i,v:longint;
begin
f[u,0]:=w[u]; f[u,1]:=0; f[u,2]:=0;
if a[u,0]=0 then
begin
f[u,1]:=maxn; f[u,2]:=maxn;
exit;
end;
mm:=maxlongint;
for i:=1 to a[u,0] do
begin
v:=a[u,i];
dp(v);
f[u,0]:=f[u,0]+min(f[v,0],min(f[v,1],f[v,2]));
f[u,1]:=f[u,1]+min(f[v,0],f[v,1]);
f[u,2]:=f[u,2]+f[v,1];
mm:=min(mm,f[v,0]-f[v,1]);
end;
if mm>0 then f[u,1]:=f[u,1]+mm;
end;
begin
readln(n); root:=0;
for i:=1 to n do
begin
root:=root+i;
read(k,w[k],m);
for j:=1 to m do
begin
read(x);
inc(a[k,0]);
a[k,a[k,0]]:=x;
root:=root-x;
end;
readln;
end;
dp(root);
writeln(min(f[root,0],f[root,1]));
end.

1 条评论

  • @ 2016-03-22 02:03:50

    你的程序错误如下:
    (0)如果a[u,0]=0,那么f[u,2]依然应该为0。这一处错误修改了之后就已经可以AC了。

  • 1

信息

ID
1144
难度
7
分类
动态规划 | 树形DP 点击显示
标签
递交数
4600
已通过
1007
通过率
22%
被复制
10
上传者