Pagini recente » Cod sursa (job #668416) | Cod sursa (job #1788133) | Cod sursa (job #2493105) | Cod sursa (job #415723) | Cod sursa (job #2835563)
#include <fstream>
#include <iostream>
#include <vector>
#define DIM 16010
using namespace std;
vector<int> L[DIM];
int v[DIM];
int S[DIM];
int maximul;
int val[DIM];
int i, j, n, x, y, k;
int maxim(int a, int b){
if (a > b)
return a;
else
return b;
}
void dfs(int nod) {
v[nod] = 1;
S[nod] = val[nod];
for (int i=0;i<L[nod].size(); i++)
if (v[ L[nod][i] ] == 0) {
dfs(L[nod][i]);
if(S[L[nod][i]] > 0)
S[nod] += S[L[nod][i]];
if(S[nod]>maximul)
maximul = S[nod];
}
}
int main() {
ifstream fin("asmax.in");
ofstream fout("asmax.out");
fin>>n;
for(i = 1; i <= n; i++)
fin >> val[i];
maximul = val[1];
for (i=1;i<n;i++) {
fin>>x>>y;
L[x].push_back(y);
L[y].push_back(x);
}
dfs(1);
fout << maximul;
return 0;
}