ural大學有n個職員,編號為1~n。他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。
第一行乙個整數n。(1<=n<=6000)
接下來n行,第i+1行表示i號職員的快樂指數ri。(-128<=ri<=127)
接下來n-1行,每行輸入一對整數l,k。表示k是l的直接上司。
最後一行輸入0,0。
輸出最大的快樂指數。
711
1111
11 3
2 36 4
7 44 5
3 50 0
5
思路:我們先可以分析,假如選了i
ii這個點,那麼和它相鄰的點都不能選。那我們就設兩個狀態,分別為選或不選這個點,那麼動態轉移方程為
f [x
][1]
+=f[
y][0
]f[x][1]+=f[y][0]
f[x][1
]+=f
[y][
0]f [x
][0]
+=ma
x(f[
y][1
],f[
y][0
])
f[x][0]+=max(f[y][1], f[y][0])
f[x][0
]+=m
ax(f
[y][
1],f
[y][
0])其中x
xx代表當前的點,y
yy代表它的相鄰點
#include
#include
#include
#include
#include
#include
using
namespace std;
int n, a[
100100
], ot[
100100];
int head[
100100
], tot;
int f[
100100][
2];struct nodeb[
1000100];
void
vl_ljb
(int x,
int y)
; head[x]
=tot;
}void
vl_dp
(int x)
}int
main()
int k=0;
for(
int i=
1; i<=n; i++)}
printf
("%d"
,max
(f[k][1
],f[k][0
]));
return0;
}
SSL 1607 沒有上司的晚會
ural大學有n個職員,編號為1 n。他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。第一行乙個整數n。1 n 6000 接下來n行,第i 1行表示i號職...
SSL 1607 沒有上司的晚會
ural大學有n個職員,編號為1 n。他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。第一行乙個整數n。1 n 6000 接下來n行,第i 1行表示i號職...
SSL1607 沒有上司的晚會 樹形DP
ural大學有n個職員,編號為1 n。他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。第一行乙個整數n。1 n 6000 接下來n行,第i 1行表示i號職...