求助大佬QAQ
查看原帖
求助大佬QAQ
178194
前进四楼主2021/7/18 10:23

30分RT

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
ll com[1000001]={0},lev[1000001]={0},dp[1000001]={0};
ll h[1000001];
ll n,OMO;
ll son[1000001]={0},fa[1000001]={0};
ll root=0;
int main(){
	cin>>n;
	for(int i=1;i<=n;i++)
		cin>>h[i];
	for(int i=1;i<=n-1;i++){
		cin>>son[i]>>OMO;
		fa[son[i]]=OMO;
	}
	for(int i=1;i<=n-1;i++){
		if(fa[fa[son[i]]]==0){
			root=fa[son[i]];
		}
	}
	for(int i=1;i<=n;i++){
		dp[i]=max(h[son[i]],h[fa[son[i]]]);
		if(i!=1)
			dp[i]+=dp[i-1];
	}
	cout<<dp[root];
	return 0;
}
2021/7/18 10:23
加载中...