洛谷 P1352 沒有上司的舞會

2021-10-04 08:40:19 字數 1075 閱讀 3457

某大學有 n 個職員,編號為 1…n。

他們之間有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。

現在有個周年慶宴會,宴會每邀請來乙個職員都會增加一定的快樂指數 ri​,但是呢,如果某個職員的直接上司來參加舞會了,那麼這個職員就無論如何也不肯來參加舞會了。

所以,請你程式設計計算,邀請哪些職員可以使快樂指數最大,求最大的快樂指數。

輸入的第一行是乙個整數 n。

第 2 到第 (n+1)行,每行乙個整數,第 (i+1)行的整數表示 iii 號職員的快樂指數 ri。

第 (n+2) 到第 (2n+1) 行,每行輸入一對整數 l,k 代表 k 是 l 的直接上司。

輸出一行乙個整數代表最大的快樂指數。

輸入 #1

711

1111

11 3

2 36 4

7 44 5

3 50 0

輸出 #1

5
資料規模與約定

對於 100% 的資料,保證 1≤n≤6×10^3,−128≤ri≤127,1≤l,k≤n,且給出的關係一定是一棵樹。

#includeusing namespace std;

const int maxn = 60002;

vectoradj[maxn];

int dp[maxn][2];

int father[maxn]; //father[i] = j;表示i的直接上司是j。

void dfs(int u)

for(int i=1;i<=n;i++)

for(int i=1;i<=n;i++)

int root = -1; //找到這棵樹的根。

for(int i=1;i<=n;i++) }

dfs(root);

int ans = max(dp[root][0],dp[root][1]);

cout

}

洛谷 P1352 沒有上司的舞會

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

洛谷 P1352 沒有上司的舞會

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

洛谷p1352 沒有上司的舞會

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