dp[i][j]:在i节点用j个士兵,得到的brain
dp[i][j]=dp[i][j-k]+dp[son[i]][k];
跟背包是一样的思想
#include<stdio.h>
#include<string.h>
#define N 110
int dp[N][N],head[N],num,bug[N],brain[N],n,m,vis[N];
//dp[i][j]:在i节点用j个士兵,得到的brain
//dp[i][j]=dp[i][j-k]+dp[son[i]][k];
struct edge
{
int st,ed,next;
}E[N*2];
void addedge(int x,int y)
{
E[num].st=x;
E[num].ed=y;
E[num].next=head[x];
head[x]=num++;
}
void dfs(int u)
{
int i,j,k,v;
vis[u]=1;
......
阅读全文