Cod sursa(job #2672577)

Utilizator CyborgSquirrelJardan Andrei CyborgSquirrel Data 14 noiembrie 2020 11:14:02
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

int n;
vector<int> gra[16041];
int v[16041], dp[16041];

void read(){
	fin >> n;
	for(int i = 1; i <= n; ++i){
		fin >> v[i];
	}
	for(int i = 0; i < n-1; ++i){
		int a, b;
		fin >> a >> b;
		gra[a].push_back(b);
		gra[b].push_back(a);
	}
}

int ans;
bool vi[16041];
int recur(int a=1){
	vi[a] = true;
	int r = v[a];
	for(auto b : gra[a]){
		if(!vi[b])r += max(recur(b),0);
	}
	ans = max(ans, r);
	return r;
}

int main(){
	// ios_base::sync_with_stdio(false);
	read();
	ans = v[1];
	recur();
	fout << ans;
	return 0;
}