Pagini recente » Cod sursa (job #1804164) | Cod sursa (job #568626) | Cod sursa (job #982294) | Cod sursa (job #2406399) | Cod sursa (job #2830605)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int n, valori[16001], rezultat[16001];
vector<int> lista[16001];
bool vizitat[16001];
void dfs(int start)
{
vizitat[start] = true;
rezultat[start] = valori[start];
for(unsigned int i = 0; i < lista[start].size(); i++)
{
int nod = lista[start][i];
if(!vizitat[nod])
{
dfs(nod);
rezultat[start] = min(rezultat[start], rezultat[start] + rezultat[nod]);
}
}
}
int main()
{
f >> n;
for(int i = 1; i <= n; i++)
f >> valori[i];
for(int i = 1; i < n; i++)
{
int x, y;
f >> x >> y;
lista[x].push_back(y);
lista[y].push_back(x);
}
dfs(1);
int afisare = INT_MIN;
for(int i = 1; i <= n ; i++)
if(rezultat[i] > afisare)
afisare = rezultat[i];
g << afisare;
return 0;
}