树形dp模板
存储
#include <bits/stdc++.h>
using namespace std;
#define size 100001
struct edge
{
int to, nt, v;
} e[2*size];
int lst[size], cnt = 0;
inline void add( int u, int v, int w )
{
cnt++;
e[cnt].to = v;
e[cnt].nt = lst[u];
e[cnt].v = w;
lst[u] = cnt;
}
子树大小+节点深度
int siz[size], dep[size];
inline void dfs( int x, int f, int d )
{
siz[x] = 1;
dep[x] = d;
for ( int i