Pagini recente » Cod sursa (job #2565166) | Cod sursa (job #1616165) | Cod sursa (job #1666137) | Cod sursa (job #1761437) | Cod sursa (job #1282721)
#include <iostream>
#include <fstream>
#define Nmax 16002
#include <algorithm>
#include <vector>
using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
vector <int> G[Nmax];
int viz[Nmax],DP[Nmax],MAX=-16000000;
void DFS(int nod,int father)
{
viz[nod]=1;
for(unsigned int i=0;i<G[nod].size();i++)
if(!viz[G[nod][i]])
DFS(G[nod][i],nod);
//DP[nod]+=val[nod];
DP[father]=max(DP[father],DP[father]+DP[nod]);
}
int main()
{
int n,i;
fin>>n;
for(i=1;i<=n;i++)
fin>>DP[i];
int x,y;
for(i=1;i<n;i++)
{
fin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
viz[1]=1;
DFS(1,0);
sort(DP,DP+n+1);
fout<<DP[n];
return 0;
}