要使时间为 O(n2),下面的第二层循环应该正序枚举吗?
for(auto to : G[x]) {
if(to == fa) continue ;
dfs(to, x);
for(int i = siz[x];i >= 0; --i)
for(int j = siz[to];j >= 1; --j) {
if(i) dp[x][i + j][1] = min(dp[x][i + j][1], dp[x][i][1] + min(dp[to][j][0], dp[to][j][1]));
dp[x][i + j][0] = min(dp[x][i + j][0], dp[x][i][0] + dp[to][j][0]);
}
siz[x] += siz[to];