Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>using namespace std;struct node{int to;int next;}e[300];int act[102];int dp[102][102];int n,k,m;int ct;int h[102];void dfs(int x,int fa){for(int i=h[x];i;i=e[i].next)if(e[i].to!=fa) dfs(e[i].to,x);dp[x][1]=act[x];for(int i=h[x];i;i=e[i].next){int v=e[i].to;if(v!=fa){for(int j=m;j>1;j--){for(int k=1;k<j;k++)dp[x][j]=max(dp[x][j-k]+dp[v][k],dp[x][j]);}}}}