Pagini recente » Cod sursa (job #1141442) | Cod sursa (job #1727190) | Cod sursa (job #213706) | Cod sursa (job #3125647) | Cod sursa (job #1136689)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
#define nmax 16001
#define maxim -1001
ifstream in("asmax.in");
ofstream out("asmax.out");
int n,i,a,b,MAX=maxim;
int val[nmax];
bool viz[nmax];
vector <int> vecin[nmax];
void dfs(int x){
int j;
viz[x]=1;
for (j=0; j<vecin[x].size(); j++){
int vc=vecin[x][j];
if (!viz[vc]){
dfs(vc);
val[x]=max(val[x], val[x]+val[vc]);
MAX=max(MAX, val[x]);
}
}
}
int main(){
in >> n;
for (i=1; i<=n; i++)
in >> val[i],
MAX=max(MAX, val[i]);
for (i=1; i<n; i++)
in >> a >> b,
vecin[a].push_back(b),
vecin[b].push_back(a);
for (i=1; i<=n; i++)
if (!viz[i])
dfs(i);
out << MAX << "\n";
return 0;
}