LOI 1352 沒有上司的舞會

2021-08-21 04:03:28 字數 1140 閱讀 8275

某大學有

n n

個職員,編號為1~

n' role="presentation" style="position: relative;">n

n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri

r

i,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞會了。所以,請你程式設計計算,邀請哪些職員可以使快樂指數最大,求最大的快樂指數。

輸入格式:

第一行乙個整數n。(1<=n<=6000)

接下來n行,第i+1行表示i號職員的快樂指數ri。(-128<=ri<=127)

接下來n-1行,每行輸入一對整數l,k。表示k是l的直接上司。

最後一行輸入0 0

輸出格式:

輸出最大的快樂指數。

#include 

#define rep( i , l , r ) for( int i = (l) ; i <= (r) ; ++i )

#define per( i , r , l ) for( int i = (r) ; i >= (l) ; --i )

#define erep( i , u ) for( int i = head[(u)] ; ~i ; i = e[i].nxt )

using

namespace

std;

int _read()

const

int maxn = 6000 + 5;

int f[maxn][2] , r[maxn] , head[maxn] , _t = 0;

struct edge e[maxn * 2];

void addedge( int u , int v )

void dfs( int u , int fa )

f[u][1] += max( 0 , r[u] );

} int main()

dfs( 1 , 0 );

cout

<< max( f[1][0] , f[1][1] ) << endl;

return

0;}

P1352 沒有上司的舞會

原題鏈結 樹形dp入門 dp方程搞錯了居然還過了90 利用dfs遞迴求解 每個點分為選和不選兩種情況 假設選為1不選為0 dp x 0 max dp num i 1 dp num i 0 這裡一開始寫成了dp num i 1 但它的兒子的兩種狀態實際上都是可選的 dp x 1 dp num i 0 ...

Luogu P1352 沒有上司的舞會

洛谷傳送門 某大學有n nn個職員,編號為1 n 1 sim n 1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數r ir i ri 但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就...

P1352 沒有上司的舞會

題目描述 某大學有n個職員,編號為1 n。他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數ri,但是呢,如果某個職員的上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞會了。所以,請你程式設計...