luogu_1352 没有上司的舞会
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了luogu_1352 没有上司的舞会相关的知识,希望对你有一定的参考价值。
#include <bits/stdc++.h> using namespace std; int r[6005],dp[6005][2]; bool is_son[6005]; vector<int> son[6005]; int solve(int n,int k){ if(~dp[n][k]) return dp[n][k]; if(!son[n].size()){ dp[n][k]=k*r[n]; return dp[n][k]; } int ans=0; for(int i=0;i<son[n].size();i++) if(k) ans+=solve(son[n][i],0); else ans+=max(solve(son[n][i],0),solve(son[n][i],1)); dp[n][k]=max(ans+r[n]*k,dp[n][k]); return dp[n][k]; } int main(){ int n; scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&r[i]); for(int i=1;i<n;i++){ int a,b; scanf("%d%d",&a,&b); son[b].push_back(a); is_son[a]=true; } memset(dp,-1,sizeof(dp)); for(int i=1;i<=n;i++) if(!is_son[i]){ printf("%d\n",max(solve(i,1),solve(i,0))); break; } return 0; }
以上是关于luogu_1352 没有上司的舞会的主要内容,如果未能解决你的问题,请参考以下文章