Pagini recente » Cod sursa (job #519392) | Cod sursa (job #1392665) | Cod sursa (job #900453) | Cod sursa (job #727759) | Cod sursa (job #2205182)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
int rez;
vector <int> v[16002];
int p[16002];
bool viz[16002];
void dfs(int x){
viz[x]=true;
int y;
for(int i=0;i<v[x].size();i++){
y=v[x][i];
if(!viz[y]){
dfs(y);
if(p[y]>0){
p[x]+=p[y];
}
}
}
rez=max(rez,p[x]);
}
int main()
{
int n,x1,x2;
fin>>n;
for(int i=1;i<=n;i++){
fin>>p[i];
}
for(int i=0;i<n;i++){
fin>>x1>>x2;
v[x1].push_back(x2);
v[x2].push_back(x1);
}
dfs(1);
fout<<rez;
return 0;
}