Pagini recente » Cod sursa (job #1957117) | Cod sursa (job #1276756) | Cod sursa (job #3192670) | Cod sursa (job #965887) | Cod sursa (job #1457499)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int d[16500],v[16500];
bool bf[16500];
vector <int> a[16500];
int n,ans = -1000000000;
void dfs(int x)
{
bf[x]=true;
d[x]=v[x];
for(int i=0;i<a[x].size();i++)
if(bf[a[x][i]]==false)
{
dfs(a[x][i]);
if(d[a[x][i]]>0) d[x]+=d[a[x][i]];
}
ans=max(ans,d[x]);
}
int main()
{
f>>n;
for(int i=1;i<=n;i++) f>>v[i];
int x,y;
for(int i=1;i<n;i++)
{
f>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
dfs(1);
g<<ans;
return 0;
}