第一种做法 我们把每个上司之间存一个 n e ne ne数组 和 p o po po数组 po数组是这个点的最后一个一个儿子 ne数组是这个儿子的上一个兄弟 递归到0 类似邻接链表
然后我们知道如果你取这个点 那么
dp[1][x] = max(max(dp[1][x],dp[1][x]+dp[0][i]),dp[0][i]);
取这个点的最大值为 和它本身加上不取他儿子的最大值 和他儿子不取的最大值取个max
dp[0][x] = max(max(dp[0][x],max(dp[0][x]+dp[1][i],dp[0][x]+dp[0][i])),max(dp[0][i],dp[1][i]));
不取这个点的最大值为他本身加上取儿子 和 他本身加上不取儿子 和取他儿子 和不取他儿子的值取max
/*
if you can't see the repay
Why not just work step by step
rubbish is relaxed
to ljq
*/
#