Pagini recente » Cod sursa (job #112995) | Cod sursa (job #2584019) | Cod sursa (job #977340) | Cod sursa (job #388652) | Cod sursa (job #1111375)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
const int N=16001;
vector<int> a[N];
int n;
short c[N];
bool v[N];
int s[N];
void dfs(int p){
v[p]=true;
int d,q;
s[p] = c[p];
for(int i=0 ; i<a[p].size() ; i++){
q = a[p][i];
if(!v[q]){
dfs(q);
if(s[q]>0){
s[p]+=s[q];
}
}
}
}
int main()
{
in>>n;
for(int i=1 ; i<=n ; i++){
in>>c[i];
}
int x,y;
while(in>>x>>y){
a[x].push_back(y);
a[y].push_back(x);
}
dfs(1);
int smax=0;
for(int i=1 ; i<=n ; i++){
if(s[i]>smax){
smax=s[i];
}
}
out<<smax;
return 0;
}