社区讨论
蒟蒻求助0pts
P2015二叉苹果树参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lo8bfch2
- 此快照首次捕获于
- 2023/10/27 15:52 2 年前
- 此快照最后确认于
- 2023/10/27 15:52 2 年前
CPP
#include <stdio.h>
#include <algorithm>
using namespace std;
struct edge{
int to,next;
int val;
}e[105];
int ecnt,head[105];
void addedge(int from,int to,int val){
e[++ecnt]=(edge){to,head[from],val};
head[from]=ecnt;
}
int n,q;
int dp[105][105];
int siz[105];
void dfs(int x,int father){
for(int i=head[x];i;i=e[i].next){
int to=e[i].to;
if(to==father)continue;
dfs(to,x);
siz[x]+=siz[to]+1;
}
for(int i=head[x];i;i=e[i].next){
int to=e[i].to;
if(to==father)continue;
for(int j=siz[x];j;j--){
for(int k=min(siz[to],j-1);k;k--){
dp[x][j]=max(dp[x][j],dp[x][j-1-k]+dp[to][k]+e[i].val);
}
}
}
}
int main(){
scanf("%d %d",&n,&q);
while(--n){
int from,to,val;
scanf("%d %d %d",&from,&to,&val);
addedge(from,to,val);
addedge(to,from,val);
}
dfs(1,-1);
printf("%d",dp[1][q]);
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...