记录编号 320998 评测结果 AAAAAAAAAA
题目名称 火车站饭店 最终得分 100
用户昵称 Gravatar农场主 是否通过 通过
代码语言 C++ 运行时间 0.493 s
提交时间 2016-10-13 07:55:06 内存使用 2.98 MiB
显示代码纯文本
#include<cstdio>
#include<vector>
#include<algorithm>
#include<cstring>
#define maxn 100100
using namespace std;

int n,m;
int f[maxn][2]={0};
vector<int> G[maxn];
int d[maxn]={0};
int vis[maxn]={0};

void read(){
	scanf("%d",&n);
	for (int i=1;i<=n;i++){
		scanf("%d",&d[i]);
	}
	int u,v;
	for (int i=1;i<n;i++){
		scanf("%d%d",&u,&v);
		G[u].push_back(v);
		G[v].push_back(u);
	}
}

#define to G[x][i]
void dfs(int x){
	vis[x]=1;
	f[x][0]=0;
	f[x][1]=d[x];
	for (int i=0;i<G[x].size();i++) if(!vis[to]){
		dfs(to);
		f[x][0]+=max(f[to][0],f[to][1]);
		f[x][1]+=f[to][0];
	}
}

int main(){
	freopen("profitz.in","r",stdin);
	freopen("profitz.out","w",stdout);
	read();
	dfs(1);
	printf("%d",max(f[1][0],f[1][1]));
	return 0;
}