Cod sursa(job #831088)

Utilizator crazzytudTudor Popa crazzytud Data 8 decembrie 2012 09:16:01
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include<fstream>
#include<vector>
using namespace std;


ifstream in("asmax.in");
ofstream out("asmax.out");

vector <int> v[16001];
int sum[16001],ver[16001];
int rez;
void dfs(int nod)
{
    for(int i=1;i<v[nod].size();i++)
    {
        if(!sum[v[nod][i]])
            dfs(v[nod][i]);
        if(sum[v[nod][i]]>0)
            rez+=sum[v[nod][i]];
    }
    sum[nod]+=ver[nod];
}

int main()
{
    int n,i,a,b;
    in>>n;

    for(i=1;i<=n;i++)
        in>>ver[i];

    for(i=1;i<n;i++)
    {
        in>>a>>b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    dfs(1);
    out<<rez<<"\n";
}