RT,7个点WA
// Problem: P3574 [POI2014]FAR-FarmCraft
// Contest: Luogu
// URL: https://www.luogu.com.cn/problem/P3574
// Memory Limit: 125 MB
// Time Limit: 1000 ms
// Powered by CP Editor (https://github.com/cpeditor/cpeditor)
#include <bits/stdc++.h>
using namespace std;
int n,l,r,a[1000010],vis[1000010],siz[1000010],f[1000010],sorted[1000010];
vector<int>road[500010];
bool cmp(int a,int b)
{
return (siz[a]-f[a])<(siz[b]-f[b]);
}
void done(int x,int y)
{
if(x!=1)
{
f[x]=a[x];
}
int cnt=0;
vis[x]=1;
for(int i=0;i<int(road[x].size());i++)
{
if(road[x][i]!=y)
{
done(road[x][i],x);
cnt++;
sorted[cnt]=road[x][i];
}
}
sort(sorted+1,sorted+1+cnt,cmp);
for(int i=1;i<=cnt;i++)
{
f[x]=max(f[x],f[sorted[i]]+siz[x]+1);
siz[x]+=siz[sorted[i]];
siz[x]+=2;
}
//cout << x << "'s f,siz,cnt:" << f[x] << ' ' << siz[x] << ' ' << cnt << endl;
}
int main()
{
cin >> n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<n;i++)
{
cin>>l>>r;
road[l].push_back(r);
road[r].push_back(l);
}
done(1,0);
cout <<max(f[1],siz[1]+a[1]);
return 0;
}