题面

裸的树上背包:

设f[u][i]表示在以u为子树的树种选择i条边的最大值,则:f[u][i]=max(f[u][i],f[u][i-j-1]+f[v][k]+u到v的边权);

#include <bits/stdc++.h>
using namespace std;
struct littlestar{
int to;
int nxt;
int w;
}star[];
int head[],cnt;
void add(int u,int v,int w)
{
star[++cnt].to=v;
star[cnt].nxt=head[u];
star[cnt].w=w;
head[u]=cnt;
}
int f[][];
int d[];
int n,q;
void dfs(int u,int fa)
{
for(int i=head[u];i;i=star[i].nxt){
int v=star[i].to;
if(v==fa) continue;
dfs(v,u);
d[u]+=d[v]+;
for(int j=min(d[u],q);j>=;j--){
for(int k=min(d[v],j-);k>=;k--){
f[u][j]=max(f[u][j],f[u][j-k-]+f[v][k]+star[i].w);
}
}
}
}
int main()
{
cin>>n>>q;
for(int i=;i<n;i++)
{
int x,y,w;
scanf("%d%d%d",&x,&y,&w);
add(x,y,w);
add(y,x,w);
}
dfs(,);
cout<<f[][q];
}

最新文章

  1. Matlab slice方法和包络法绘制三维立体图
  2. Codeforces Round #234A
  3. VS2013环境问题
  4. 转:union和union all的区别
  5. 数据查询语言DQL 与 内置函数(聚合函数)
  6. uitableviewcell cell.accessoryType 右箭头
  7. 用Js的eval解析JSON中的注意点
  8. 关于TCP传输速率的测量方法
  9. ArcObjects10.0MapControl不显示地图内容
  10. Qt学习之自定义窗口部件
  11. Styles and Themes
  12. React组件三
  13. Lattice Diamond安装
  14. JavaScript、JSP、Java及javaEE
  15. json解包与json封包
  16. python通过scapy模块进行arp断网攻击
  17. HTML5 &amp; how to download SVG in js
  18. Java的参数传递是「按值传递」还是「按引用传递」?
  19. OpenCV:直线拟合——cv::fitLine()详解
  20. 人生效率手册:如何卓有成效地过好每一天--By张萌姐姐--读书笔记

热门文章

  1. jquery getScript动态加载JS方法改进详解
  2. codevs 2602 最短路径问题x
  3. PyQT5堆叠布局:切换界面(QStackedLayout)
  4. 2002: [Hnoi2010]Bounce 弹飞绵羊(分块)
  5. leetcode-easy-listnode-237 Delete Node in a Linked List
  6. Cas服务器以及客户端搭建
  7. orcal 根据打分时间计算打分情况
  8. P2672 推销员(已经补锅)
  9. flutter 添加全局环境变量
  10. Python基本语法_函数_参数的多类型传值