Pagini recente » Cod sursa (job #565068) | Cod sursa (job #2695242) | Cod sursa (job #2270886) | Cod sursa (job #3211516) | Cod sursa (job #2256942)
#include <fstream>
#include <vector>
using namespace std;
ifstream fi("asmax.in");
ofstream fo("asmax.out");
const int NMAX=16005;
int n,mx,s[NMAX],val[NMAX],VIZ[NMAX],x,y;
vector <int> V[NMAX];
void dfs(int x)
{
s[x]=val[x];
VIZ[x]=1;
for(auto y: V[x])
if(!VIZ[y])
{
VIZ[y]=1;
dfs(y);
if(s[y]>0)
s[x]+=s[y];
}
}
int main()
{
fi>>n;
for(int i=1;i<=n;i++)
fi>>val[i];
for(int i=1;i<n;i++)
{
fi>>x>>y;
V[x].push_back(y);
V[y].push_back(x);
}
dfs(1);
for(int i=1;i<=n;i++)
if(mx<s[i])
mx=s[i];
fo<<mx<<"\n";
fi.close();
fo.close();
return 0;
}