Cod sursa(job #1418655)

Utilizator alex.vasiuVasiu Alexandru alex.vasiu Data 13 aprilie 2015 16:47:09
Problema Asmax Scor 30
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <fstream>
#include<vector>
using namespace std;
ifstream f("asmax.in");
ofstream fout("asmax.out");
int n,p[16001];
long long int mx=-(1<<30),suma[16001];
vector <int> g[16001];
bool viz[16001];
void df(int nod)
{
suma[nod]=p[nod];
viz[nod]=1;
for(int i=0;i<g[nod].size();i++)
if(viz[g[nod][i]]==0)
{
df(g[nod][i]);
if(p[g[nod][i]]>0)
suma[nod]+=p[g[nod][i]];
}
}
int main()
{
f>>n;
int mx=0;
for(int i=1;i<=n;i++)
f>>p[i],mx+=p[i];
for(int i=1;i<n;i++)
{
int x,y;
f>>x>>y;
g[x].push_back(y);
g[y].push_back(x);
}
f.close();
df(1);

for(int i=1;i<=n;i++)
if(mx<suma[i])
mx=suma[i];
fout<<mx;
}