Pagini recente » Cod sursa (job #2947299) | Cod sursa (job #1186737) | Cod sursa (job #2176663) | Cod sursa (job #2258457) | Cod sursa (job #2829438)
#include <bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector<int> v[16001];
vector<int> vis;
int val[100001];
int n,x,y,maxi=-10001;
int dfs(int node){
int i;
vis[node]=1;
for(i=0;i<v[node].size();i++){
if(!vis[v[node][i]]){
int sum=dfs(v[node][i]);
if(val[node]+sum>val[node])
val[node]+=sum;
}
}
if(maxi<val[node])
maxi=val[node];
return val[node];
}
int main(){
int i;
f>>n;
for(int i=1;i<=n;i++)
{
f>>val[i];
}
for(i=0;i<n-1;i++){
f>>x>>y;
v[x].push_back(y);
v[y].push_back(x);
}
for(i=0;i<=n;i++)
{
vis.push_back(0);
}
dfs(1);
g<<maxi;
}