洛谷 P2015 二叉苹果树 题解
2024-09-05 17:03:01
裸的树上背包:
设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];
}
最新文章
- Matlab slice方法和包络法绘制三维立体图
- Codeforces Round #234A
- VS2013环境问题
- 转:union和union all的区别
- 数据查询语言DQL 与 内置函数(聚合函数)
- uitableviewcell cell.accessoryType 右箭头
- 用Js的eval解析JSON中的注意点
- 关于TCP传输速率的测量方法
- ArcObjects10.0MapControl不显示地图内容
- Qt学习之自定义窗口部件
- Styles and Themes
- React组件三
- Lattice Diamond安装
- JavaScript、JSP、Java及javaEE
- json解包与json封包
- python通过scapy模块进行arp断网攻击
- HTML5 &; how to download SVG in js
- Java的参数传递是「按值传递」还是「按引用传递」?
- OpenCV:直线拟合——cv::fitLine()详解
- 人生效率手册:如何卓有成效地过好每一天--By张萌姐姐--读书笔记