Pagini recente » Cod sursa (job #3167778) | Cod sursa (job #3215381) | Cod sursa (job #2549590) | Cod sursa (job #3266257) | Cod sursa (job #1426556)
#include <iostream>
#include <vector>
#include <fstream>
#define nm 16007
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector < int> v[nm];
bool visited[nm];
int d[nm];
void df(int i)
{
for(auto it = v[i].begin(); it != v[i].end(); it++)
if(!visited[*it])
{
visited[*it] = true;
df(*it);
if(d[*it]>0)
d[i]+=d[*it];
}
}
int main()
{
int n,i,a,b;
in >> n;
int val[n+1];
for(i = 1 ; i <=n ; i ++)
{
in >> val[i];
visited[i] = false;
d[i] = val[i];
}
for( i = 1 ; i < n ; i++)
{
in >> a>> b;
v[a].push_back(b);
v[b].push_back(a);
}
visited[1] = true;
df(1);
int maxi = 0;
for( i = 1 ; i <= n ; i++)
if(d[i]>maxi)
maxi = d[i];
out<<maxi;
return 0;
}