Pagini recente » Cod sursa (job #709040) | Cod sursa (job #1744946) | Cod sursa (job #261053) | Cod sursa (job #628748) | Cod sursa (job #1443744)
#include<iostream>
#include<fstream>
#include<vector>
using namespace std;
vector<int> muchii[16001];
bool vizitat[16001];
long int sumamax[16001];
void DFS(int i)
{
for(int j=0;j<muchii[i].size();j++)
{
if(vizitat[muchii[i][j]]==0)
{
vizitat[muchii[i][j]]=1;
DFS(muchii[i][j]);
if(sumamax[muchii[i][j]]>0)
sumamax[i]+=sumamax[muchii[i][j]];
}
}
}
int main()
{
ifstream f("asmax.in");
ofstream g("asmax.out");
int n;
long int max=-1000;
f>>n;
int i,a;
for(i=1;i<=n;i++)
{
f>>a;
sumamax[i]=a;
if(a>max)
max=a;
}
int b;
for(i=1;i<=n-1;i++)
{
f>>a>>b;
muchii[a].push_back(b);
muchii[b].push_back(a);
}
vizitat[1]=1;
DFS(1);
for(i=1;i<=n;i++)
if(sumamax[i]>max)
max=sumamax[i];
g<<max;
}