voiddfs(int u,int fa) { f[u][0][0] = f[u][0][1] = 1; for (int i = head[u]; i; i = net[i]) { int v = ver[i]; if(v == fa) continue; dfs(v, u); for (int j = k; j >= 0; j--) { for (int t = 0; t <= j; t++) { f[u][j][0] = max(f[u][j][0], max(f[u][j - t][0] + f[v][t - 2][1], f[u][j - t][1] + f[v][t - 1][0])); f[u][j][1] = max(f[u][j][1], f[u][j - t][1] + f[v][t - 2][1]); } } } }
intmain() { scanf("%d%d", &n, &k); for (int i = 1; i < n; i++) { int u, v; scanf("%d%d", &u, &v); add(u + 1, v + 1), add(v + 1, u + 1); } dfs(1, -1); int ans = 0; for (int i = 0; i <= k; i++) ans = max(ans, f[1][i][0]); printf("%d", ans); }