Pagini recente » Cod sursa (job #2449338) | Cod sursa (job #2698952) | Cod sursa (job #530502) | Cod sursa (job #778202) | Cod sursa (job #2749458)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("asmax.in");
ofstream fout("asmax.out");
int n, x, y;
int nod[16001], viz[16001], s[16001];
vector<int> g[16001];
void dfs(int k)
{
s[k]=nod[k];
viz[k]=1;
for(auto &v: g[k])
{
if(viz[v]==0){
dfs(v);
if(s[v]>0) s[k]+=s[v];
}
}
}
int main()
{
fin>>n;
for(int i=1; i<=n; i++)
fin>>nod[i];
for(int i=1; i<=n-1; i++)
{
fin>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
dfs(1);
int maxi=0;
for(int i=1; i<=n; i++)
if(s[i]>maxi) maxi=s[i];
fout<<maxi;
return 0;
}