# 題目

AP325 Q-8-12. 佔領連續的城鎮

# 解題思路

目前沒東西...

# 程式碼

#include<bits/stdc++.h>
using namespace std;
#define N 100005
vector<int> child[N];
long long mx=0,sum[N]={0},w[N];
void dfs(int v,int p){
    for(auto e:child[v]){
        if(e==p) continue;
        dfs(e,v);
        sum[v]=max(sum[v],sum[v]+sum[e]);
        mx=max(mx,sum[v]);
    }
}
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>w[i];
        sum[i]=w[i];
    }
    for(int i=1,u,v;i<n;i++){
        cin>>u>>v;
        child[u].push_back(v);
        child[v].push_back(u);
    }
    dfs(1,-1);
    cout<<mx;
    return 0;
}