很久以前做的树形DP题,今天再遇到时,竟然不会了,所以写写.. 设数组: prf[MAX][MAX],cost[MAX],sum[MAX].分别表示,在第i个结点为根的子树内的情况下,若有j个用户申请看电视,所能得到的最大费用.cost表示传送到i点时所花的费用,而sum表示当前结点为根的子树内已访问的叶子结点的个数(即用户). void dfs(int v,int fa){ ){ ;i<T[v].size();i++){ dfs(T[v][i],v); } } ) sum[v]=; sum[f