Pagini recente » Cod sursa (job #910833) | Profil olarasuloredana | Cod sursa (job #1337162) | Cod sursa (job #1747658) | Cod sursa (job #973147)
Cod sursa(job #973147)
#include<fstream>
#define inf -(1<<20)
#define NM 17000
#include<vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,i,a[NM],viz[NM],x,y,sol,A[NM];
vector<int> v[NM];
void dfs(int x)
{
viz[x]=1;
int best=0;
for(int i=0;i<v[x].size();++i)
if(!viz[v[x][i]])
{
dfs(v[x][i]);
if(A[v[x][i]]>0)
best+=A[v[x][i]];
}
A[x]=a[x]+best;
if(A[x]>sol)
sol=A[x];
viz[x]=0;
}
int main ()
{
f>>n;
for(i=1;i<=n;++i)
f>>a[i];
for(i=1;i<n;++i)
{
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
g<<sol;
return 0;
}