Cod sursa(job #1444434)

Utilizator costyv87Vlad Costin costyv87 Data 29 mai 2015 19:24:57
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <cstdio>
#include <vector>
using namespace std;
FILE *f,*g;

int d[16500],v[16500];
bool bf[16500];
vector <int> a[16500];
int n,ans = -1000000000;

void dfs(int x)
{
    bf[x] = true;
    d[x] = v[x];

    for (int i=0;i<a[x].size();i++)
        if (bf[a[x][i]] == false)
        {
            dfs(a[x][i]);
            if (d[a[x][i]]>0) d[x] += d[a[x][i]];
        }
    ans = max(ans,d[x]);
}



int main()
{
    f=fopen("asmax.in","r");
    g=fopen("asmax.out","w");

    fscanf(f,"%d",&n);

    for (int i=1;i<=n;i++) fscanf(f,"%d",&v[i]);

    int x,y;
    for (int i=1;i<n;i++)
    {
        fscanf(f,"%d%d",&x,&y);
        a[x].push_back(y);
        a[y].push_back(x);
    }

    dfs(1);

    fprintf(g,"%d",ans);

    return 0;
}