Pagini recente » Cod sursa (job #180021) | Clasament arhiva-utcn | Cod sursa (job #928527) | Cod sursa (job #1899904) | Cod sursa (job #2873474)
#include <fstream>
#include <vector>
#define pb push_back
using namespace std;
using vi=vector<int>;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int N=16e3+2;
const int INF=-1e9;
int n,u,v,i;
int ans=INF;
int dp[N];
vi g[N];
void dfs(int x,int p)
{
int sum=0;
for(auto i:g[x])
if(i!=p)
{
dfs(i,x);
if(dp[i]>0)
sum+=dp[i];
}
dp[x]+=sum;
}
int main()
{
fin>>n;
for(i=1; i<=n; i++)
fin>>dp[i];
for(i=1; i<n; i++)
{
fin>>u>>v;
g[u].pb(v);
g[v].pb(u);
}
dfs(1,0);
for(i=1; i<=n; i++)
ans=max(ans,dp[i]);
fout<<ans<<'\n';
return 0;
}