Pagini recente » Cod sursa (job #624792) | Cod sursa (job #269435) | Cod sursa (job #1044667) | Cod sursa (job #1628157) | Cod sursa (job #2856868)
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector< vector<int> > muchii;
int n,viz[16000],val[16000],suma[16000],maxim;
void citire(){
in>>n;
muchii.resize(n);
for(int i=0; i<n; i++){
in>>val[i];
}
int a,b;
while(in>>a>>b){
a--;b--;
muchii[a].push_back(b);
muchii[b].push_back(a);
}
}
void dfs(int x){
viz[x]=true;
suma[x]=val[x];
for(auto y:muchii[x]){
if(!viz[y]){
dfs(y);
if(suma[y]>0){
suma[x]+=suma[y];
}
}
}
}
int main()
{
citire();
dfs(0);
for(int i=0; i<n; i++){
if(suma[i]>maxim){
maxim=suma[i];
}
}
out<<maxim;
return 0;
}