Cod sursa(job #2819871)

Utilizator lolismekAlex Jerpelea lolismek Data 19 decembrie 2021 12:26:53
Problema Asmax Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <bitset>

using namespace std;

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

const int N = 16010, INF = 1e9 + 1;
vector <int> adj[N];
int val[N], sum[N];
bitset <N> viz;

void dfs(int nod) {
	viz[nod] = 1;
	sum[nod] += val[nod];
	for (auto vec : adj[nod]) {
		if (!viz[vec]) {
			dfs(vec);
			sum[nod] = max(sum[nod], sum[nod] + sum[vec]);
		}
	}
}

int main() {
	int n;
	fin >> n;
	for (int i = 1; i <= n; i++) fin >> val[i];
	for (int i = 1; i < n; i++) {
		int a, b;
		fin >> a >> b;
		adj[a].push_back(b);
		adj[b].push_back(a);
	}
	dfs(1);
	int maxi = -INF;
	for (int i = 1; i <= n; i++) maxi = max(maxi, sum[i]);
	fout << maxi;
	return 0;
}