Pagini recente » Cod sursa (job #1808933) | Cod sursa (job #1240618) | Cod sursa (job #1498288) | Cod sursa (job #692874) | Cod sursa (job #2393851)
#include <bits/stdc++.h>
#define NUM 16005
using namespace std;
vector <int> graf[NUM];
int sum[NUM];
int viz[NUM];
int n, a, b, maxim;
void dfs(int nod)
{
viz[nod] = 1;
for(int i = 0; i < graf[nod].size(); ++i)
{
int nodA = graf[nod][i];
if(!viz[nodA])
{
dfs(nodA);
if(sum[nodA] > 0)
sum[nod] += sum[nodA];
}
}
}
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
f >> n;
for(int i = 1; i <= n; ++i)
f >> sum[i];
for(int i = 1; i < n; ++i)
{
f >> a >> b;
graf[a].push_back(b);
graf[b].push_back(a);
}
dfs(1);
maxim = INT_MIN;
for(int i = 1; i <= n; ++i)
if(sum[i] > maxim)
maxim = sum[i];
g << maxim;
f.close();
g.close();
}