Cod sursa(job #1426561)

Utilizator sulzandreiandrei sulzandrei Data 29 aprilie 2015 22:04:26
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <vector>
#include <fstream>
#define nm 16007
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
vector < int> v[nm];
bool visited[nm];
int d[nm];
void df(int i)
{
    for(auto it = v[i].begin(); it != v[i].end(); it++)
        if(!visited[*it])
        {
            visited[*it] = true;
            df(*it);
            if(d[*it]>0)
                d[i]+=d[*it];
        }
}
int main()
{
    int n,i,a,b;
    in >> n;
    int val[n+1];
    for(i = 1 ; i <=n ; i ++)
    {
        in >> val[i];
        visited[i] = false;
        d[i] = val[i];
    }
    for( i = 1 ; i < n ; i++)
    {
        in >> a>> b;
        v[a].push_back(b);
        v[b].push_back(a);
    }
    visited[1] = true;
    df(1);
    int maxi = 1<<31;
    for( i = 1 ; i <= n ; i++)
        if(d[i]>maxi)
            maxi = d[i];
    out<<maxi;
    return 0;
}