Pagini recente » Cod sursa (job #807601) | Cod sursa (job #2150250) | Cod sursa (job #1798808) | Cod sursa (job #2575935) | Cod sursa (job #1733715)
#include <cstdio>
#include <algorithm>
#include <vector>
#define MaxN 1005
#define INF 2000000000
using namespace std;
int N,cost[MaxN],a,b,val,Max=-INF;
vector<int>List[MaxN];
bool visited[MaxN]={};
int DFS(int node)
{
visited[node]=true;
for(int i=0;i<List[node].size();i++)
{
if(!visited[List[node][i]])
{
val=DFS(List[node][i]);
if(val>0)cost[node]+=val;
}
}
return cost[node];
}
int main()
{
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&N);
for(int i=1;i<=N;i++)
scanf("%d",&cost[i]);
for(int i=1;i<N;i++)
{
scanf("%d%d",&a,&b);
List[a].push_back(b);
List[b].push_back(a);
}
DFS(1);
for(int i=1;i<=N;i++)
Max=max(Max,cost[i]);
printf("%d",Max);
return 0;
}