Cod sursa(job #2210656)

Utilizator EdgeLordXDOvidiuPita EdgeLordXD Data 7 iunie 2018 15:34:35
Problema Asmax Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <bits/stdc++.h>
using namespace std;
ifstream in("asmax.in");
ofstream out("asmax.out");
#define N 16001
int arr[N];
bool v[N];
int a[2*N];
int b[2*N];
int c[N];
int k=0,s=0,m=0;
int dfs(int i){
    int t=c[i];
    v[i]=1;
    while(t){
        if(!v[a[t]])
            arr[i]+=max(0,dfs(a[t]));
        t=b[t];
    }//}cout<<i<<" "<<arr[i]<<" "<<s<<"\n";
    m=max(m,arr[i]);
    return arr[i];
}
int add(int x, int y){
    a[++k]=y;
    b[k]=c[x];
    c[x]=k;
}
int main(){
    int n,x,y,i,j;
    in>>n;
    for(i=1; i<=n; ++i)
        in>>arr[i];
    for(i=1; i<n; ++i){
        in>>x>>y;
        add(x,y);
        add(y,x);
    }
    dfs(1);
    out<<m;
    return 0;
}