Cod sursa(job #1455938)

Utilizator MaligMamaliga cu smantana Malig Data 29 iunie 2015 14:52:55
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include<iostream>
#include<fstream>
#include<cmath>
#include<algorithm>
#include<vector>
#include<bitset>
#include<cstring>
#include<queue>

#define ull unsigned long long
#define ll long long
#define pb push_back
#define FOR(a,b,c) for (int a=b;a<=c; ++a)
#define ROF(a,b,c) for (int a=b;a>=c; --a)

using namespace std;
ifstream f("asmax.in");
ofstream g("asmax.out");
int N,max1;
int v[16010];
vector<int> a[16010];
bitset<16010> verif;

void depth(int);

int main()
{
    max1=-(1<<31);
    f>>N;
    FOR (i,1,N) f>>v[i];
    FOR (i,1,N-1) {
        int x,y;
        f>>x>>y;
        a[x].pb(y);
        a[y].pb(x);
    }
    depth(1);
    /*FOR (i,1,N)
        cout<<v[i]<<' ';*/
    g<<max1;
    f.close();g.close();
    return 0;
}

void depth(int n) {
    verif[n]=true;
    //cout<<n<<'\n';
    for (unsigned int k=0;k<a[n].size();++k) {
        if (!verif[a[n][k]]) {
            depth(a[n][k]);
            v[n]+=(v[a[n][k]]>0) ? v[a[n][k]] : 0;
        }
    }
    max1=(v[n]>max1) ? v[n] : max1;
}