# 題目
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; | |
} |