讨论 / AC 100分代码 pascal qq:[email protected] 邮箱:[email protected] 简短代码,有且AC那么加我qq
g++ 2016-04-03 05:03:37
点我顶贴 收藏 删除
var

l,r,a:array[0..1000] of longint;

f:array[0..1000,0..100] of longint;

i,j,k,m,n:longint;

function max(x,y:longint):longint;

begin

if x>y then exit(x);

exit(y);

end;

procedure dfs(x,k:longint);

var

i:longint;

begin

if x<=0 then exit;

if k<=0 then exit;

if f[x,k]>0 then exit;

dfs(r[x],k);

f[x,k]:=f[r[x],k];

for i:=0 to k-1 do

begin

dfs(l[x],i);

dfs(r[x],k-i-1);

f[x,k]:=max(f[x,k],f[l[x],i]+f[r[x],k-i-1]+a[x]);

end;

end;

begin

assign(input,'stupid in.txt');reset(input);

assign(output,'stupid out.txt');rewrite(output);

readln(n,m);

for i:=1 to n do

read(a[i]);

readln;

for i:=1 to n do

begin

readln(j,k);

r[k]:=l[j];

l[j]:=k;

end;

fillchar(f,sizeof(f),0);

dfs(l[0],m);

writeln(f[l[0],m]);

end.

查看更多回复
提交回复