Pagini recente » Cod sursa (job #2286936) | Cod sursa (job #1630600) | Cod sursa (job #1811269) | Cod sursa (job #2845) | Cod sursa (job #2947190)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int n;
int viz[101];
int v[101];
int a[101][101];
int sg;
void citire()
{
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> v[i];
int x, y;
for(int i = 1; i < n; ++i)
{
fin >> x >> y;
a[x][y] = a[y][x] = 1;
}
}
int nod_max()
{
int nmax = 1;
for(int i = 2; i <= n; ++i)
if(v[i] > v[nmax])
nmax = i;
return nmax;
}
int dfs(int x)
{
viz[x] = 1;
int sl = v[x];
for(int i = 1; i <= n; ++i)
if(a[x][i] && !viz[i])
{
sl = max(sl, sl + dfs(i));
}
if(sl > sg)
sg = sl;
return sl;
}
int main()
{
citire();
int nm = nod_max();
dfs(nm);
fout << sg;
return 0;
}