Pagini recente » Cod sursa (job #1175127) | Cod sursa (job #2861787) | Cod sursa (job #178837) | Cod sursa (job #1621580) | Cod sursa (job #1880632)
#include <fstream>
#include <iostream>
#include <algorithm>
#include <deque>
#include <vector>
#define inf 0x3f3f3f3f
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, v[16005], use[16005];
vector < int > graf[16005];
void DFS(int x)
{
use[x] = 1;
for(int i = 0 ; i < graf[x].size(); ++i)
{
if(!use[ graf[ x ][ i ] ])
{
DFS(graf[x][i]);
v[x] = max(v[x], v[graf[x][i]] + v[x]);
}
}
}
int main()
{
int maxx = -inf, x, y;
f >> n;
for(int i = 1; i <= n; ++i) f >> v[i];
for(int i = 1; i < n; ++i)
{
f >> x >> y;
graf[x].push_back(y);
graf[y].push_back(x);
}
DFS(1);
for(int i = 1; i <= n; ++i)
if(v[i] > maxx) maxx = v[i];
g << maxx;
}