Pagini recente » Cod sursa (job #1045381) | Cod sursa (job #1277613) | Cod sursa (job #2252585) | Cod sursa (job #2734529) | Cod sursa (job #830834)
Cod sursa(job #830834)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream in ("asmax.in");
ofstream out("asmax.out");
vector <int> a[16005];
int n,maxim=-100001,aux,v[16005];
bool calculat[16005];
void citire()
{
int x,y;
in>>n;
for(int i=1;i<=n;i++)
{
in>>v[i];
}
for(int i=1;i<n;i++)
{
in>>x>>y;
//cout<<x<<" "<<y<<'\n';
a[x].push_back(y);
a[y].push_back(x);
}
}
int dfs(int nod)
{
calculat[nod] = true;
for(int i=0;i<a[nod].size();i++)
if(!calculat[a[nod][i]])
{
aux=dfs(a[nod][i]);
if(aux>0)
{
v[nod]+=aux;
}
}
return v[nod];
}
int main()
{
citire();
maxim=dfs(1);
for(int i=2;i<=n;i++)
if(v[i]>maxim)
{
maxim=v[i];
}
out<<maxim<<"\n";
return 0;
}