Pagini recente » Cod sursa (job #2072113) | Cod sursa (job #1049329) | Cod sursa (job #1321916) | Cod sursa (job #2173246) | Cod sursa (job #3202130)
#include <fstream>
#include <vector>
using namespace std;
const int Vmax = 100001;
bool viz[Vmax];
vector<int> v[Vmax];
int sumaMax[Vmax];
int sumaMaxima;
int n, a[Vmax];
void dfs(int nod){
viz[nod]=1;
sumaMax[nod] = a[nod];
for(int j : v[nod]){
if(!viz[j]){
dfs(j);
if(sumaMax[j] > 0)
sumaMax[nod] += sumaMax[j];
}
}
if(sumaMax[nod] > sumaMaxima)
sumaMaxima = sumaMax[nod];
}
int main(){
ifstream fin("asmax.in");
ofstream fout("asmax.out");
fin>>n;
for(int i=1;i<=n;i++){
fin>>a[i];
}
for(int i=1;i<=n;i++){
int x, y;
fin>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
fout<<sumaMaxima;
}