Pagini recente » Cod sursa (job #1874291) | Cod sursa (job #2920809) | Cod sursa (job #1838549) | Cod sursa (job #9563) | Cod sursa (job #1428979)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
vector <int> G[16006];
int maxi,s[16006],v[16006],viz[16006];
void dfs(int nod)
{
int k;
viz[nod]=1;
s[nod]=v[nod];
for(int j=0;j<G[nod].size();j++)
{
k=G[nod][j];
if(!viz[k])
{dfs(k);
if(s[nod]<s[nod]+s[k])
s[nod]+=s[k];
}
}
if(s[nod]>maxi)
maxi=s[nod];
}
int main()
{int n;
f>>n;
for(int i=1;i<=n;i++)
f>>v[i];
for(int i=1;i<n;i++)
{
int x,y;
f>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
maxi=-1006;
dfs(1);
g<<maxi;
return 0;
}