洛谷 P1352 沒有上司的舞會

2021-08-15 09:25:39 字數 1467 閱讀 2754

洛谷 p1352 沒有上司的舞會

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

輸入格式:

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

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

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

最後一行輸入0 0

輸出格式:

輸出最大的快樂指數。

輸入輸出樣例

輸入樣例71

1111

111 32 3

6 47 4

4 53 5

0 0輸出樣例

5

題目分析:這裡有位大佬分析的很全面,我就不再分析了。qwq

#include

#include

#include

#include

#include

#include

using

namespace std;

struct arrbot[

6005];

int head[

6005

],fa[

6005

],vis[

6005

],que[

6005

],hap[

6005];

int dp[

6005][

2];int n,s,t,cnt;

queue<

int>q;

inline

intread()

inline

void

add(

int a,

int b)

void

bfs(

int s)

}return;}

intmain()

for(

register

int i=

1;i<=n;

++i)

s=1;while

(s!=fa[s]

) s=fa[s]

;bfs

(s);

for(

register

int i=t;i>=0;

--i)

dp[u][1

]+=hap[u];}

printf

("%d\n"

,max

(dp[s][0

],dp[s][1

]));

return0;

}

洛谷 P1352 沒有上司的舞會

原題 這道題我非常神奇賴皮的用了拓撲,實際上這是一道樹形dp,但是身為蒟蒻的我覺得拓撲可以寫,結果真的讓我水過了,哈哈哈 用乙個二維陣列模擬每個人參加或者不參加,從最底層的員工開始向上拓撲 by acer.mo include include includeusing namespace std i...

洛谷p1352 沒有上司的舞會

題目已經說了這是一棵樹,而這道題顯然不是重心或者lca之類的東西,所以我們考慮樹形dp。一句廢話 首先考慮如果節點i不去舞會時以i為根的子樹的快樂指數最大值,顯然就是每個以i的兒子為根的子樹的最大值之和。如果節點i參加舞會,那麼相應的最大值就是i的每個兒子都不去時,以i的兒子為根的最大值之和,再加上...

洛谷P1352 沒有上司的舞會

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