hdu4616(树形dp)

链接:点击打开链接

题意:给出一个树上每个节点的权值和是否有陷阱,最多能遇到m个陷阱,当遇到第m个陷阱时必须停下来,求获得的最大权值使多少

代码:

#include 
#include 
#include 
#include 
#include 
#include 
using namespace std;
vector G[50005];
int n,m,ans;
int dp[50005][5][2];
int val[50005],vis[50005],sign[50005];
void dfs(int s){
    int i,j,k,tmp;
    vis[s]=1;
    dp[s][sign[s]][0]=dp[s][sign[s]][1]=val[s];
    for(i=0;i

你可能感兴趣的:(动态规划,---------树形dp)