Pagini recente » Cod sursa (job #539405) | Cod sursa (job #1924899) | Cod sursa (job #1275775) | Cod sursa (job #2654471) | Cod sursa (job #3221147)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
vector <vector<int>> graf;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int vis[16000];
float val[16000];
void dfs(int nod){
vis[nod]=true;
for(int i=0;i<graf[nod].size();i++){
int vec= graf[nod][i];
if(!vis[vec]){
dfs(vec);
if(val[vec]>0)
val[nod]=val[nod]+val[vec];
}
}
}
int main(){
int n;
fin>>n;
graf.resize(n+1);
int minim,sum=0;
for(int i=1;i<=n;i++){
fin>>val[i];
sum+=val[i];
}
for(int i=1;i<=n-1;i++){
int a,b;
fin>>a>>b;
graf[a].push_back(b);
graf[b].push_back(a);
}
dfs(1);
minim=val[1];
for(int i=1;i<=n;i++){
if(val[i]>minim)
minim=val[i];
}
fout<<minim;
return 0;
}