Lang:G++
Edit12345678910111213141516171819202122232425262728293031#include <cstdio>#include <cstring>#define rep(i,n) for(int i = 0; i < n; i++)#define cls(p,b) memset(p,b,sizeof(p));#define N 100int s[N],t[N]={0},dp[N][N+1];int hd[N],nt[N<<1],to[N<<1],num=0;void conn(int u,int v) {nt[num] = hd[u];to[num] = v;hd[u] = num++;}int go(int u,int w) {int res = 0;for(int i = hd[u]; ~i; i = nt[i]) {int v = to[i];if(v==w) continue;res+=go(v,u);}if(u) if(res || t[u]) {res ++;s[0] += s[u];s[u] = 0;}return res;}int dfs(int u,int w,int m) {