Pagini recente » Cod sursa (job #1012530) | Cod sursa (job #2594411) | Cod sursa (job #2901227) | Cod sursa (job #2042286) | Cod sursa (job #2603075)
#include <bits/stdc++.h>
using namespace std;
vector <int> G[20001];
int val[20001],k[20001],mx=INT_MIN;
bool viz[20001];
void DFS (int start)
{
viz[start]=1;
k[start]=val[start];
for(int i=0;i<G[start].size();i++)
{
if(viz[G[start][i]]==0)
{
DFS(G[start][i]);
if(k[G[start][i]]>0)
k[start]+=k[G[start][i]];
}
}
mx=max(mx,k[start]);
}
int main()
{
ifstream f ("asmax.in");
ofstream g ("asmax.out");
int n,x,y;
f>>n;
for(int i=1;i<=n;i++)
f>>val[i];
for(int i=1;i<n;i++)
{
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
DFS(1);
g<<mx;
return 0;
}