Pagini recente » Cod sursa (job #570176) | Cod sursa (job #2112832) | Cod sursa (job #2412831) | Cod sursa (job #1323124) | Cod sursa (job #2634738)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
#define INF 100000
vector<int>v[16001];
int n,a[16001],summax,viz[16001],ans=-INF;
void dfs(int nod)
{
viz[nod]=1;
int i;
for(i=0;i<v[nod].size();i++)
if(viz[v[nod][i]]==0)
{
dfs(v[nod][i]);
if(a[v[nod][i]]>0)
a[nod]+=a[v[nod][i]];
}
ans=max(ans,a[nod]);
}
int main()
{
int i,maxi=0,retine=0,x,y;
fin>>n;
for(i=1;i<=n;i++)
{
fin>>a[i];
if(a[i]>maxi)
{
maxi=a[i];
retine=i;
}
}
for(i=1;i<=n-1;i++)
{
fin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
fout<<ans;
return 0;
}