Cod sursa(job #2771513)

Utilizator AndreiCroitoruAndrei Croitoru AndreiCroitoru Data 27 august 2021 18:15:29
Problema Asmax Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

vector < int > g[16001];
int sum[16001];
int v[16001];
bool aux[16001];
void dfs( int nod )
{
	sum[nod] = v[nod];
	for (unsigned int i = 0; i < g[nod].size(); i++ )
	{
		int fiu = g[nod][i];
		if ( !aux[fiu] )
		{
			aux[fiu] = 1;
			dfs(fiu);
			if ( sum[fiu] >= 0 )
				sum[nod] += sum[fiu];
		}
	}
}

int main()
{
	ifstream cin ("asmax.in");
	ofstream cout ("asmax.out");
	int n;
	cin >> n;
	for ( int i = 1; i <= n; i ++ )
	{
		cin >> v[i];
	}
	for ( int i = 1; i < n; i ++ )
	{
		int a, b;
		cin >> a >> b;
		g[a].push_back(b);
		g[b].push_back(a);
	}
	int maxim = -1;
	aux[1] = 1;
	dfs(1);
	for ( int i = 1; i <= n; i ++ )
		maxim = max( maxim, sum[i] );
	cout << maxim;
}