樹上
void dfs(int u, int pre) {
if (vis[u]) dp[u][0] = dp[u][1] = 0;
else dp[u][0] = dp[u][1] = -INF;
for (int v : G[u]) if (v != pre) {
dfs(v, u);
// 更新 dp[u] 使用 dp[v]
}
}
void dfss(int u, int pre) {
// 利用父親信息更新子節點
}