[RQNOJ 696] 【树形DP】
orz数组开小了
#include<cstdio>
#include<iostream>
#include<cstring>
#include<cmath>
#include<algorithm>
#include<vector>
using namespace std;
char _c;int _flag;
inline void read(int& _x)
{
_c = getchar();_flag = false;_x=0;
while(_c<'0'||_c>'9'){if(_c=='-')_flag=true;_c=getchar();}
while(_c>='0'&&_c<='9'){_x=_x*10+_c-'0';_c=getchar();}
if(_flag)_x=-_x;
}
int n,k,i,j,a,b,ans;
#define maxn 100010
vector<int> e[maxn];
int w[maxn],dep[maxn];
int dp[maxn][110],tmp[110];
int v;
//status: [u][k] => u的子树中选中的点中离u最近的那个点距离最少为k的时候的答案
void dfs(int u,int fa)
{
dep[u]=dep[fa]+1;
for(int i=0;i<e[u].size();i++)
{
v = e[u][i];
if(v!=fa)
dfs(v,u);//先处理子树
}
for(int i=0;i<e[u].size();i++)
{
v = e[u][i];
if(v!=f