Pagini recente » Cod sursa (job #1592244) | Cod sursa (job #907375) | Cod sursa (job #1145961) | Cod sursa (job #1773850) | Cod sursa (job #2013081)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
int n,i,j,sum[16005],viz[16005],maxi,a,b;
vector<int> v[16005];
ifstream f("asmax.in");
ofstream g("asmax.out");
void dfs(int nod)
{
int i,vecin;
for(i=0;i<v[nod].size();i++)
{
vecin=v[nod][i];
if(!viz[vecin])
{
viz[vecin]=1;
dfs(vecin);
if(sum[vecin]>0) sum[nod]+=sum[vecin];
}
}
if(sum[nod]>maxi) maxi=sum[nod];
}
int main()
{
f>>n;
for(i=1;i<=n;i++) f>>sum[i];
for(i=1;i<n;i++)
{
f>>a>>b;
v[a].push_back(b);
v[b].push_back(a);
}
maxi=-100000000;
viz[1]=1;
dfs(1);
g<<maxi<<'\n';
return 0;
}