Pagini recente » Cod sursa (job #1058258) | Cod sursa (job #419260) | Cod sursa (job #1710487) | Cod sursa (job #2193313) | Cod sursa (job #1235948)
#include <fstream>
#include <vector>
#include <limits.h>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> a[16001];
int n,i,x,y,v[16001],nrel[16001],maxsuma,viz[16001];
void coada(int nr){
viz[nr]=1;
for(int i=0;i<nrel[nr];i++){
if(viz[a[nr][i]]==0){
int el=a[nr][i];
coada(el);
if(v[nr]+v[a[nr][i]]>v[nr])
v[nr]=v[nr]+v[a[nr][i]];
if (maxsuma<v[nr])
maxsuma=v[nr];
}
}
}
int main()
{
int Max=INT_MIN,p=0;
maxsuma=INT_MIN;
f>>n;
for(i=1;i<=n;i++){
f>>v[i];
if(v[i]>Max){
Max=v[i];
p=i;
}
}
for(i=1;i<=n-1;i++){
f>>x>>y;
a[x].push_back(y);
a[y].push_back(x);
}
for(i=1;i<=n;i++)
nrel[i]=a[i].size();
coada(i);
g<<maxsuma;
return 0;
}