Pagini recente » Cod sursa (job #749410) | Cod sursa (job #3176988) | Cod sursa (job #2135984) | Cod sursa (job #2208805) | Cod sursa (job #3312520)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n;
vector<int> v[16003];
int a[16003];
int rez=-1e9;
int dfs(int nod,int parent)
{
int sum=a[nod];
for (auto i:v[nod])
{
if (i!=parent)
{
int val=dfs(i,nod);
sum+=val;
}
}
rez=max(rez,sum);
return max(0,sum);
}
bool ok;
int main()
{
fin>>n;
for (int i=1;i<=n;i++)
{
fin>>a[i];
if (a[i]>0) ok=true;
}
if (!ok)
{
int Max=a[1];
for (int i=2;i<=n;i++)
Max=max(Max,a[i]);
fout<<Max;
return 0;
}
for (int i=1;i<n;i++)
{
int x,y;
fin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1,0);
fout<<rez;
return 0;
}