码迷,mamicode.com
首页 > 其他好文 > 详细

luogu_1352 没有上司的舞会

时间:2017-10-18 16:15:32      阅读:189      评论:0      收藏:0      [点我收藏+]

标签:sizeof   +=   turn   scanf   namespace   std   ack   highlight   back   

#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 没有上司的舞会

标签:sizeof   +=   turn   scanf   namespace   std   ack   highlight   back   

原文地址:http://www.cnblogs.com/HC-LittleJian/p/7687014.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!