Pagini recente » Cod sursa (job #311954) | Istoria paginii runda/simulare_2011/clasament | Cod sursa (job #154485) | Istoria paginii utilizator/ral3x | Cod sursa (job #1001451)
#include<fstream>
#include<vector>
using namespace std;
#define k -200000000
#define NMax 16005
ifstream f("asmax.in");
ofstream g("asmax.out");
int n,i,value[NMax],viz[NMax],x,y,Smax,w[NMax];
vector<int> v[NMax];
void dfs(int x)
{
viz[x]=1;
int S=0;
for(int i=0;i<v[x].size();++i)
if(!viz[v[x][i]])
{
dfs(v[x][i]);
if(w[v[x][i]]>0)
S+=w[v[x][i]];
}
w[x]=value[x]+S;
if(w[x]>Smax)
Smax=w[x];
viz[x]=0;
}
int main ()
{
Smax=k;
f>>n;
for(i=1;i<=n;++i)
f>>value[i];
for(i=1;i<n;++i)
{
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
g<<Smax;
return 0;
}