Pagini recente » Cod sursa (job #2259486) | Cod sursa (job #1394129) | Cod sursa (job #1188187) | Cod sursa (job #1431937) | Cod sursa (job #415002)
Cod sursa(job #415002)
#include<iostream>
#include<fstream>
#include<cstdio>
#include<vector>
#define MAX 16002
#define pb push_back
using namespace std;
vector<int> G[MAX],v(MAX, 0), c;
int n,rez=-1000000000;
void citire()
{
int i;
ifstream fin("asmax.in");
fin>>n;
c.pb(0);
for(i=1;i<=n;i++)
{
int x;
fin>>x;
c.pb(x);
}
for(i=1;i<n;i++)
{
int x,y;
fin>>x>>y;
G[x].pb(y);
G[y].pb(x);
}
}
void dfs(int k)
{
v[k]=1;
for( vector<int>::iterator it=G[k].begin(); it<G[k].end(); it++)
if(v[*it]==0)
{
dfs(*it);
if(c[k]<c[*it]+c[k])
c[k]=c[*it]+c[k];
if(c[k]>rez)
rez=c[k];
}
if(G[k].size()==1)
if(c[k]>rez)
rez=c[k];
}
int main()
{
freopen("asmax.out","w", stdout);
citire();
dfs(1);
printf("%d", rez);
return 0;
}