help
查看原帖
help
1390444
This_is_my_choice楼主2025/7/22 21:37

样例输出10,求条

#include<bits/stdc++.h>
using namespace std;
const int N=6e3+5;
const int M=1e5+5;
const int Mod=1e9+7;
int dp[N][2];
int h[N];
vector<int> a[N];
int root;
void dfs(int x){
	dp[x][1]=h[x];
	dp[x][0]=0;
	for(int i=0;i<a[x].size();i++){
		int v=a[x][i];
		dfs(v);
		dp[x][1]+=dp[x][0];
		dp[x][0]+=max(dp[v][1],dp[v][0]);
	}
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	//Write the code here
	//Come
	int n;
	cin>>n;
	for(int i=1;i<=n;i++){
		int u,v,w;
		cin>>u>>v>>w;
		h[v]=w;
		if(u==0){
			root=v;
			continue;
		}
		a[u].push_back(v);
	}
	dfs(root);
	cout<<max(dp[root][1],dp[root][0]);
	return 0;
}
//LMAO
//Code by chc
2025/7/22 21:37
加载中...