Pagini recente » Cod sursa (job #1037987) | Cod sursa (job #850855) | Cod sursa (job #725240) | Cod sursa (job #1809418) | Cod sursa (job #1615432)
#include <fstream>
#include <iostream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
const int nmax = 16050;
int maxim;
int av[nmax], val[nmax];
bool ver[nmax];
vector <int> graf[nmax];
void parc(int nod){
av[nod] = val[nod];
ver[nod] = true;
for(int i = 0; i < graf[nod].size(); ++i){
if(!ver[ graf[nod][i] ]){
parc(graf[nod][i]);
if(av[ graf[nod][i] ] > 0)
av[nod] += av[ graf[nod][i] ];
}
}
if(av[nod] > maxim)
maxim = av[nod];
}
int n;
int main()
{
f>>n;
for(int i = 1; i <= n; ++i){
f>>val[i];
}
for(int i = 1, x, y; i < n; ++i){
f>>x>>y;
graf[x].push_back(y);
graf[y].push_back(x);
}
parc(1);
g<<maxim<<'\n';
return 0;
}