D 树上dp,dp[i]表示i号点染或者不染的最大权值。 u点如果不选的话,其权值等于所有儿子选或不选的最大值。 u点如果选的话,其权值等于选择一条边+其他儿子选或不选的最大值 其他儿子选不选就是dp[u][0]-选的那条边选或不选的最大值。 代码如下 #include"bits/stdc++.h" using namespace std; #define rep(i,a,n) for(int i=a;i<=n;i++) #define rpe(i,a,n) for(int i=a;i>=n;i--) #define js ios::sync_with_stdio(fals...