Cod sursa(job #927578)

Utilizator lenesulBirlica Alexandru lenesul Data 25 martie 2013 21:18:12
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#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;
    val.push_back(0);
    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;
}