Cod sursa(job #183091)

Utilizator CezarMocanCezar Mocan CezarMocan Data 21 aprilie 2008 18:36:47
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <cstdio>
#include <vector>

using namespace std;

long n,i,j,a,b,viz[16100],c[16100],mx;
vector <long> v[16100];

void df(long x)
    {
    long i,j,nr;    
    viz[x]=1;
    nr=v[x].size();
    if (nr>0)
    for (i=0;i<nr;i++)
        {
        if (viz[v[x][i]]==0)
            {
//            printf("%d ",v[x][i]);                
            df(v[x][i]);
//            printf("%d %d \n",x,c[v[x][i]]);
            if (c[v[x][i]]>0)
                c[x]+=c[v[x][i]];
            }
        }
    if (c[x]>mx)
        mx=c[x];
    }

int main(){
freopen("asmax.in","r",stdin);
freopen("asmax.out","w",stdout);
scanf("%d",&n);
for (i=1;i<=n;i++)
    scanf("%d",&c[i]);
for (i=1;i<=n-1;i++)
    {
    scanf("%d%d",&a,&b);
    v[a].push_back(b);
    v[b].push_back(a);    
    }
mx=-(1<<30);
df(1);
printf("%d\n",mx);
return 0;    
}