Pagini recente » Cod sursa (job #833086) | Cod sursa (job #3335683) | Cod sursa (job #978340) | Cod sursa (job #3352345) | Cod sursa (job #3311778)
#include <fstream>
#include <vector>
#define int long long
using namespace std;
ifstream fcin("asmax.in");
ofstream fout("asmax.out");
int n,val[20000],a,b,dp[20000],rez;
vector <int> v[20000];
inline void dfs(int nod, int p)
{
dp[nod]=val[nod];
for(int i : v[nod]) if(i!=p)
{
dfs(i,nod);
if(dp[i]>0)
dp[nod]+=dp[i];
}
rez=max(rez,dp[nod]);
}
signed main()
{
fcin>>n;
for(int i=1; i<=n; i++)
fcin>>val[i];
for(int i=1; i<n; i++)
{
fcin>>a>>b;
v[a].emplace_back(b);
v[b].emplace_back(a);
}
dfs(1,-1);
fout<<rez;
return 0;
}