Cod sursa(job #2009061)
| Utilizator | Data | 8 august 2017 15:26:09 | |
|---|---|---|---|
| Problema | Asmax | Scor | 60 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.58 kb |
#include <bits/stdc++.h>
using namespace std;
const int N=16003;
int n,v[N],best[N],sol=-1e9;
vector<int>g[N];
void dfs(int nod,int father) {
best[nod]=v[nod];
for(auto it:g[nod]) {
if(it!=father) {
dfs(it,nod);
best[nod]+=max(0,best[it]);
}
}
sol = max(sol, best[nod]);
}
int main() {
ifstream cin("asmax.in");
ofstream cout("asmax.out");
cin>>n;
for(int i=1; i<=n; ++i)cin>>v[i];
for(int i=1; i<=n; ++i) {
int a,b;
cin>>a>>b;
g[a].push_back(b);
g[b].push_back(a);
}
dfs(1,0);
cout<<sol;
}
