Cod sursa(job #1278086)

Utilizator maribMarilena Bescuca marib Data 28 noiembrie 2014 14:48:23
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <fstream>
#include <list>
#define INF 0xfffffff;
using namespace std;

int maxx;

short int n,a , b;

short int vis[16001], v[16001];

list <short int> nod[16001];

int dfs(int vf)
{
    int s;
    vis[vf]=1;
    s=v[vf];
    for(list <short int>::iterator j=nod[vf].begin(); j!=nod[vf].end(); ++j)
    {
        if(vis[*j]==0)
            {
                s+=(dfs(*j));
            }
    }
    if(s>maxx)
        maxx=s;
    if(s<0)
        s=0;
    return s;
}

int main()
{
    //freopen(stdin, "",);
    //fprintf(stderr, "");
    ifstream in("asmax.in");
    ofstream out("asmax.out");
    in>>n;
    maxx=-INF;
    for(int i=1; i<=n; ++i)
    {
        in>>v[i];
    }
    for(int i=1; i<n; ++i)
    {
        in>>a>>b;
        nod[a].push_back(b);
        nod[b].push_back(a);
    }
    dfs(1);
    out<<maxx<<"\n";
    in.close();
    out.close();
    return 0;
}