题意:Ural大学有n个职员,1~N编号,他们有从属关系,就是说他们关系就像一棵树,父节点就是子节点的直接上司,每个职员有一个快乐指数,现在要开会,职员和职员的直接上司不能同时开会,问怎才能使开会的快乐指数最高。
思路:用树状dp,dp[i][0]为不参加会议,dp[i][1]为参加会议
#include#include #include #define N 6010using namespace std;vector v[N];int dp[N][2],hp[N],mark[N];int max(int a,int b){return a>b?a:b;}void dfs(int k){ int i,len=v[k].size(); dp[k][0]=0; dp[k][1]=hp[k]; if(len==0) return ; for(i=0;i