Pagini recente » Cod sursa (job #3362273) | Cod sursa (job #3364098) | Cod sursa (job #3362402) | Cod sursa (job #3362822) | Cod sursa (job #3362277)
#include <bits/stdc++.h>
using namespace std;
int dp[16001],v[16001],sup;
vector<vector<int>> m(16001);
int n,a,b;
int vis[16001];
void dfs(int nod)
{
int vec;
vis[nod]=1;
dp[nod]=v[nod];
for(int i=0;i<m[nod].size();i++)
{
vec=m[nod][i];
if(!vis[vec])
{
dfs(vec);
if(dp[vec]>0)
{
dp[nod]=dp[nod]+dp[vec];
}
}
}
if(sup<dp[nod])sup=dp[nod];
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>v[i];
}
for(int i=1;i<=n;i++)
{
cin>>a>>b;
m[a].push_back(b);
m[b].push_back(a);
dp[i]=-1;
}
sup=-10000000;
dfs(1);
cout<<sup;
return 0;
}