Pagini recente » Cod sursa (job #248693) | Cod sursa (job #1947469) | Cod sursa (job #2811157) | Cod sursa (job #102695) | Cod sursa (job #3140353)
#include <fstream>
#include <vector>
using namespace std;
ifstream cin ("asmax.in");
ofstream cout ("asmax.out");
int suma[16001] , suma_maxima = -2e9;
vector <int> fii[16001];
void Parcurgere (int nod_actual)
{
for (auto fiu : fii[nod_actual])
Parcurgere(fiu) , suma[nod_actual] += max(0 , suma[fiu]);
suma_maxima = max(suma_maxima , suma[nod_actual]);
}
int main ()
{
int noduri;
cin >> noduri;
for (int indice = 1 ; indice <= noduri ; indice++)
cin >> suma[indice];
for (int indice = 1 , nod[2] ; indice < noduri ; indice++)
{
cin >> nod[0] >> nod[1];
if (nod[0] > nod[1])
swap(nod[0] , nod[1]);
fii[nod[0]].push_back(nod[1]);
}
Parcurgere(1);
cout << suma_maxima;
cout.close(); cin.close();
return 0;
}