Pagini recente » Borderou de evaluare (job #2821167) | Arhiva de probleme | Autentificare | Cod sursa (job #248720) | Cod sursa (job #1235949)
#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;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(p);
g<<maxsuma;
return 0;
}