这题就是把一个森林看成一个树,然后从虚拟节点0开始进行树形dp,但是dfs(0)的时候,0没有和任何节点建边,那么怎么继续搜索呢???
就比如第一篇题解
void dp(int now)
{
for(int i=head[now];i;i=e[i].pre)
{
int go=e[i].to;
dp(go);
for(int j=m+1;j>=1;j--)
{
for(int k=0;k<j;k++)
{
f[now][j]=max(f[now][j],f[go][k]+f[now][j-k]);
}
}
}
}