Pagini recente » Rating Bujor Tiberiu-Cosmin (Tiiberiu) | Cod sursa (job #678399) | Cod sursa (job #1681780) | Cod sursa (job #1065725) | Cod sursa (job #3202225)
#include <fstream>
#include <vector>
using namespace std;
const int NMAX = 16001;
ifstream f("asmax.in");
ofstream g("asmax.out");
int v[NMAX], summax[NMAX], N, sol;
vector<int> L[NMAX];
void citire()
{
int x, y;
f >> N;
for (int i = 1; i <= N; i++)
f >> v[i];
for (int i = 1; i <= N - 1; i++)
{
f >> x >> y;
L[x].push_back(y);
L[y].push_back(x);
}
}
void DFS(int nod, int tata)
{
summax[nod] = v[nod];
for(int i : L[nod])
if(i != tata)
{
DFS(i, nod);
if(summax[i] > 0)
summax[nod] += summax[i];
}
}
int main()
{
citire();
DFS(1, 0);
for (int i = 1; i <= N; i++)
sol = max(summax[i], sol);
g << sol;
f.close();
g.close();
return 0;
}