Code:

#include <bits/stdc++.h>
#define N 107
#define setIO(s) freopen(s".in","r",stdin)
using namespace std;
int n,K,f[N][N],g[N][N],tmp[N][N];
vector<int>G[N];
void add(int u,int v)
{
G[u].push_back(v);
}
void getmax(int &a,int b)
{
if(b>a) a=b;
}
void dfs(int u,int ff)
{
f[u][0]=tmp[u][0]=1;
for(int i=0;i<G[u].size();++i)
{
int v=G[u][i];
if(v==ff) continue;
dfs(v,u);
for(int j=K;j>=0;--j)
{
for(int d=0;d<=j;++d)
{
if(j-d-1>=0)
{
getmax(tmp[u][j], f[u][j-d-1]+g[v][d]); // 新走
}
if(j-d-2>=0) getmax(tmp[u][j],tmp[u][j-d-2]+f[v][d]); // 以前走过
}
}
for(int j=K;j>=0;--j)
{
for(int d=0;d<=j;++d)
if(j-d-2>=0) getmax(f[u][j], f[u][j-d-2]+f[v][d]);
}
}
for(int i=0;i<=K;++i) g[u][i]=tmp[u][i];
}
int main()
{
int i,j;
// setIO("input");
scanf("%d%d",&n,&K);
for(i=1;i<=n-1;++i)
{
int a,b;
scanf("%d%d",&a,&b),add(a+1,b+1),add(b+1,a+1);
}
dfs(1,0);
int ans=0;
for(i=1;i<=K;++i) getmax(ans, g[1][i]);
printf("%d\n",ans);
return 0;
}

  

最新文章

  1. android——相对布局,表格布局
  2. Java的各种工具类
  3. javascrpt 中的Ajax请求
  4. 解决32位plsql连接数据库的问题
  5. tcprstat源码分析之tcp数据包分析
  6. android webview 访问https页面 SslError 处理
  7. C#学习第六天
  8. Linux(Centos)之安装tomcat并且部署Java Web项目(转)
  9. 9_Permanent Storage
  10. POJ 3691 DNA repair 基于AC自己主动机DP
  11. android脚步---简单图片浏览器改变图像透明度
  12. JspContext对象与PageContext对象
  13. Webpack 速成
  14. JEESZ-kafka集群安装
  15. DDD实践
  16. keepalived--小白博客
  17. node+mongoose+vue
  18. windows下consul利用json文件注册服务
  19. C++ Primer 笔记——嵌套类 局部类
  20. Linux中使用Electronic WeChat客户端

热门文章

  1. 适合新手的160个creakme(二)
  2. MyBatis学习存档(5)——联表查询
  3. Django模型(model)系统
  4. 利用ant-design封装react的地址输入组件
  5. Winform界面GridView中XCDataGridViewCheckBoxAllColumn改变触发事件
  6. 通过hadoop上的hive完成WordCount
  7. 0502 xss 实验
  8. LaTeX中Python代码的语法高亮
  9. JavaMaven【八、pom.xml】
  10. Python入门之第三方模块安装