Pagini recente » Cod sursa (job #2074255) | Cod sursa (job #1964971) | Cod sursa (job #424718) | dik | Cod sursa (job #1898784)
#include <bits/stdc++.h>
#define da 16005
using namespace std;
int v[da], viz[da];
int n;
int d[da],dp[da];
vector <int > L[da];
void Citire()
{
int x,y;
ifstream fin("asmax.in");
fin>>n;
for(int i=1;i<=n;i++)
fin>>v[i];
for(int i=1;i<n;i++)
{
fin>>x>>y;
d[x]++;
d[y]++;
L[x].push_back(y);
L[y].push_back(x);
}
}
void DFS(int k)
{
viz[k]=1;
dp[k]=v[k];
for(int i=0;i<L[k].size();i++)
if(!viz[L[k][i]])
{
DFS(L[k][i]);
if(dp[L[k][i]]>0)
dp[k]+=dp[L[k][i]];
}
}
void Rez()
{
int m;
for(int i=1;i<=n;i++)
if(d[i]==1)
DFS(i);
m=dp[1];
for(int i=2;i<=n;i++)
m=max(m,dp[i]);
ofstream fout("asmax.out");
fout<<m;
}
int main()
{
Citire();
Rez();
return 0;
}