三个限制:
sz[u]
i-j<=sz[u]-sz[v]
j<=sz[v]
void dfs(int u,int fa) {
sz[u]=dp[u][1]=1;
for(int v:G[u]) if(v!=fa) {
dfs(v,u);
sz[u]+=sz[v];
for(int i=sz[u];i>=1;i--) {
for(int j=max(1,i-sz[u]+sz[v]),rk=min(sz[v],i-1);j<=rk;j++) {
dp[u][i]=dp[u][i]+dp[u][i-j]*dp[v][j];
if(dp[u][i]>=mod) dp[u][i]%=mod;
}
}
}
}