Pagini recente » Cod sursa (job #398039) | Cod sursa (job #2613528) | Cod sursa (job #2686205) | Cod sursa (job #2927669) | Cod sursa (job #2543880)
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
const int DIM = 16005;
vector <int> l[DIM];
int dp[DIM];
bool viz[DIM];
void dfs(int x, int &rez)
{
viz[x] = true;
for(int i = 0; i < l[x].size(); i++)
{
if(viz[l[x][i]] == false)
{
dfs(l[x][i],rez);
dp[x] = max(dp[x], dp[i] + dp[l[x][i]]);
}
}
rez = max(rez,dp[x]);
}
int main()
{
int n;
in >> n;
for(int i = 1; i <= n; i++)
in >> dp[i];
for(int i = 1; i < n; i++)
{
int x, y;
in >> x >> y;
l[x].push_back(y);
l[y].push_back(x);
}
int rez = 0;
dfs(1,rez);
out << rez;
return 0;
}