Pagini recente » Cod sursa (job #1953389) | Cod sursa (job #1450359) | Cod sursa (job #79761) | Cod sursa (job #2114514) | Cod sursa (job #3246079)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, mini, s[16005], fr[16005], a[16005], maxi;
vector<int> v[16005];
void dfs(int nod)
{
s[nod] = a[nod]; fr[nod] = 1;
for(auto x : v[nod])
if(!fr[x])
{
dfs(x);
if(s[x] > 0)
s[nod] += s[x];
}
maxi = max(maxi, s[nod]);
}
int main()
{
f >> n;
for(int i = 1; i <= n; i ++)
f >> a[i];
for(int i = 1; i < n; i ++)
{
int x, y; f >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
maxi = -100000;
dfs(1);
g << maxi;
return 0;
}