f
[
x
]
[
1
]
f[x][1]
f[x][1] 表示
x
x
x 会出席晚会,所以他的儿子都不出席,取和:
f
[
x
]
[
1
]
=
∑
y
∈
s
o
n
[
x
]
f
[
y
]
[
0
]
f[x][1] = \sum_{y \in son[x]}^{} f[y][0]
f[x][1]=∑y∈son[x]f[y][0]
f
[
x
]
[
0
]
f[x][0]
f[x][0] 表示
x
x
x 不出席晚会,所以他的儿子可以选择出席与否,取最大值:
f
[
x
]
[
0
]
=
∑
y
∈
s
o
n
[
x
]
M
a
x
(
f
[
y
]
[
0
]
,
f
[
y
]
[
1
]
)
f[x][0] = \sum_{y \in son[x]}^{} Max( f[y][0],f[y][1] )
f[x][0]=∑y∈son[x]Max(f[y][0],f[y][1])
解题流程
矩阵存图,记录父子关系;
找到第一个跟,开始搜索;
回溯更新;
答案:
a
n
s
=
m
a
x
(
f
[
r
o
o
t
]
[
0
]
,
f
[
r
o
o
t
]
[
1
]
)
ans=max(f[root][0],f[root][1])
ans=max(f[root][0],f[root][1])