Pagini recente » Cod sursa (job #1050753) | Cod sursa (job #1853760) | Cod sursa (job #2325067) | Cod sursa (job #346935) | Cod sursa (job #2829391)
#include<bits/stdc++.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector<int> values,visited;
vector<int> adjList[16001];
int maxi=-1001;
int DFS(int x){
visited[x]++;
int i;
for(i=0;i<adjList[x].size();++i){
if(visited[adjList[x][i]]==0){
int s=DFS(adjList[x][i]);
if(s+values[x]>values[x])
values[x]=values[x]+s;
}
}
maxi=max(maxi,values[x]);
return values[x];
}
int main(){
int n,a,b;
f>>n;
int i;
for(i=0;i<n;++i){
f>>a;
values.push_back(a);
visited.push_back(0);
}
for(i=0;i<n-1;++i){
f>>a>>b;
adjList[a-1].push_back(b-1);
adjList[b-1].push_back(a-1);
}
DFS(0);
g<<maxi;
return 0;
}