Pagini recente » Cod sursa (job #1166420) | Cod sursa (job #540516) | Cod sursa (job #1018365) | Cod sursa (job #1197090) | Cod sursa (job #2465311)
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
#define NMAX 16000
vector <int> V[NMAX+5];
int N, viz[NMAX+5], val[NMAX+5], s[NMAX+5], smax;
void asmax (int node) {
viz[node] = 1;
for (int i = 0; i < V[node].size(); i++) {
int vecin = V[node][i];
if (!viz[vecin]) {
s[vecin] = max(s[node] + val[vecin], val[vecin]);
if(s[vecin] > smax)
smax = s[vecin];
asmax(vecin);
}
}
}
int main () {
in >> N;
for (int i = 0; i < N; i++)
in >> val[i];
int x,y;
for (int i = 0; i < N-1; i++) {
in >> x >> y;
V[x].push_back(y);
V[y].push_back(x);
}
for (int i = 0; i < N; i++) {
smax = val[i];
s[i] = val[i];
asmax(i);
for (int j = 0; j < N; j++)
viz[j] = 0;
}
out << smax;
}