Pagini recente » Cod sursa (job #1943873) | Cod sursa (job #42422) | Cod sursa (job #87024) | Cod sursa (job #2327671) | Cod sursa (job #927548)
Cod sursa(job #927548)
#include <iostream>
#include <vector>
#include <fstream>
using namespace std;
int n,rad,viz[16001],suma;
vector <int> v[16001],val;
void citire()
{
ifstream f("asmax.in");
f>>n;
int i,x,y;
for(int i=1;i<=n;i++)
{
f>>x;
val.push_back(x);
}
for(int i=1;i<=n-1;i++)
{
f>>x>>y;
viz[y]=1;
v[x].push_back(y);
}
for(int i=1;i<=n;i++)
if(viz[i]==0) {rad=i;break;}
f.close();
}
void dfs(int i)
{
int j,l;
l=v[i].size();
for(j=0;j<l;j++)
{
if(v[v[i][j]].size()) dfs(v[i][j]);
if((val[v[i][j]]+val[i])>val[i]) val[i]+=val[v[i][j]];
}
}
int main()
{
citire();
dfs(rad);
ofstream g("asmax.out");
g<<val[rad];
g.close();
return 0;
}