Pagini recente » Cod sursa (job #1448101) | Cod sursa (job #2025538) | Cod sursa (job #2124674) | Cod sursa (job #129205) | Cod sursa (job #2634736)
#include<bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector<int>v[16001];
int n,a[16001],summax,viz[16001],ans;
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(retine);
fout<<ans;
return 0;
}