算法:贪心
分析:应该说是骗的30分吧……
program forest;
const
maxn=30000;
var
n,m,ans:longint;
ljb:array [0..maxn,0..100] of longint;
v:array [0..maxn] of longint;
procedure init;
var
i,j,x,xx,dis:longint;
begin
ans:=0;
fillchar(v,sizeof(v),0);
readln(n);
for i:=1 to n do
begin
read(x);
for j:=1 to x do
begin
read(xx,dis);
inc(ljb[i,0]);
ljb[i,ljb[i,0]]:=xx;
v[xx]:=v[i]+dis;
end;
end;
readln(m);
end;
procedure qsort(l,r:longint);
var
i,j,m,t:longint;
begin
i:=l;
j:=r;
m:=v[(l+r) shr 1];
repeat
while v[i]<m do inc(i);
while v[j]>m do dec(j);
if i<=j then
begin
t:=v[i];
v[i]:=v[j];
v[j]:=t;
inc(i);
dec(j);
end;
until i>j;
if i<r then qsort(i,r);
if l<j then qsort(l,j);
end;
procedure change(x,tt:longint);
var
i:longint;
begin
if ljb[x,0]=0 then
begin
dec(v[x],tt);
exit;
end;
for i:=1 to ljb[x,0] do
begin
change(ljb[x,i],v[x]);
dec(v[ljb[x,i]],v[x]);
end;
end;
procedure main;
var
i:longint;
begin
for i:=1 to n do
begin
if v[i]>m then
begin
inc(ans);
change(i,v[i]);
v[i]:=0;
end;
end;
end;
begin
assign(input,'forest.in'); reset(input);
assign(output,'forest.out'); rewrite(output);
init;
main;
writeln(ans);
close(input); close(output);
end.