SSL1607 沒有上司的舞會

2021-10-09 03:22:23 字數 1598 閱讀 9907

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號職...