hdu1520 树形DP

题意:给出一棵树,每一节点有一个权重,约束是不能有两个相邻的节点被同时选择,然后问最后能够得到的最大权重是多少

解法:树上的最大独立集,然后状态转移方程就是选择了当前点只能加上每个儿子节点不选的最大权重,然后如果不选当前节点,那么要考虑选择儿子节点或者不选择儿子节点

#include
#include
#include
#include
using namespace std;
#define maxn 11111
vectorg[maxn];
int dp[maxn][2],val[maxn],in[maxn];
int a,b,n,root;
void init(){
    memset(dp,0,sizeof dp);
    memset(in,0,sizeof in);
}
void dfs(int u){
    for(int i=0;i


你可能感兴趣的:(DP)