样例都过不了为啥能AC?
查看原帖
样例都过不了为啥能AC?
800543
NirvanaCeleste楼主2024/7/22 11:14
#include <bits/stdc++.h>
using namespace std;
int n,q,tot,root;
int ls[110],rs[110],lw[110],rw[110],fa[110];
int dp[110][110];
void insert(int u,int v,int w){
	if(ls[u] == 0){
		ls[u] = v;
		lw[u] = w;
	}
	else{
		rs[u] = v;
		rw[u] = w;
	}
	return;
}
void dfs(int u){
	if(u == 0) return;
	dfs(ls[u]),dfs(rs[u]);	
	for(int k=1;k<=q;k++) dp[u][k] = max(dp[ls[u]][k-1] + lw[u],dp[u][k]);
	for(int k=1;k<=q;k++) dp[u][k] = max(dp[rs[u]][k-1] + rw[u],dp[u][k]);
	for(int k=2;k<=q;k++){
		for(int l=1;l<k;l++){
			dp[u][k] = max(dp[ls[u]][l-1] + lw[u] + dp[rs[u]][k-l-1] + rw[u],dp[u][k]);
		}
	}
	return;
}
int main(){
	cin>>n>>q;
	int u,v,w;
	for(int i=1;i<n;i++){
		scanf("%d %d %d",&u,&v,&w);
		insert(u,v,w);
		fa[v] = u;
	}
	for(int i=1;i<=n;i++) if(fa[i] == 0) root = i;
	dfs(root);
	cout<<dp[root][q];
	return 0;
}
2024/7/22 11:14
加载中...