沒有上司的舞會

2022-05-08 01:36:05 字數 1407 閱讀 1243

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

輸入格式:

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

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

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

最後一行輸入0 0

輸出格式:

輸出最大的快樂指數。

輸入樣例#1: 

711

1111

11 3

2 36 4

7 44 5

3 50 0

輸出樣例#1: 

5

分析:

突然發現居然沒寫樹形dp???這道題就是樹形dp的模板題,所謂樹形dp按我的理解就是dfs加上dp。

code:

1 #include 2 #include 3 #include 4 #include 5 #include 6

using

namespace

std;

7const

int m=1000005;8

int n,nxt[m],head[m],to[m],r[m],f[m][2

],tot,root;

9bool

flag[m];

10 inline int

read()

13while (c>='

0'&&c<='

9') ans=(ans<<1)+(ans<<3)+(c^48),c=getchar();

14if (f) return ans;return ~ans+1;15

}16int max(int u,int v)

17void add(int x,int

y)21

void dfs(int

x)28

return;29

}30intmain()

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

39if (!flag[i]) root=i;

40dfs(root);

41 printf("

%d",max(f[root][0],f[root][1

]));

42return0;

43 }

沒有上司的舞會

題目描述 description ural大學有n個職員,編號為1 n。他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。輸入描述 input descri...

沒有上司的舞會

ural大學有 n 個職員,編號為 1 n 他們有從屬關係,也就是說他們的關係就像一棵以校長為根的樹,父結點就是子結點的直接上司。每個職員有乙個快樂指數。現在有個周年慶宴會,要求與會職員的快樂指數最大。但是,沒有職員願和直接上司一起與會。第一行乙個整數n。1 n 6000 接下來n行,第i 1行表示...

沒有上司的舞會

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