Pagini recente » Cod sursa (job #1742877) | Cod sursa (job #1478676) | Cod sursa (job #450377) | Cod sursa (job #3146835) | Cod sursa (job #2672606)
#define NMAX 16005
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, v[NMAX], maxi = INT_MIN;
vector<int> graph[NMAX];
void read()
{
int a, b;
f>>n;
for(int i = 1; i <= n; ++i)
f>>v[i];
for(int i = 1; i < n; ++i)
{
f>>a>>b;
graph[a].push_back(b);
graph[b].push_back(a);
}
}
int viz[NMAX];
int recurs(int vf)
{
int smax = v[vf];
for(auto &c:graph[vf])
if(viz[c] == 0)
{
viz[c] = 1;
smax = max(smax,smax + recurs(c));
viz[c] = 0;
}
if(smax > maxi)
maxi = smax;
return smax;
}
int main()
{
read();
viz[1] = 1;
recurs(1);
g<<maxi;
return 0;
}