Cod sursa(job #3222907)

Utilizator deliaandreeaddelia andreea deliaandreead Data 11 aprilie 2024 20:37:53
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.78 kb
#include <iostream>
#include <fstream>
#include <vector>

using namespace std;

ifstream fin("asmax.in");
ofstream fout("asmax.out");

int val[16005];
vector<vector<int>>graf;
bool vis[16005];
int sm=-999999;

int DFS(int nod){
    vis[nod]=true;
    for(int vec:graf[nod]){
        if(!vis[vec]){
            DFS(vec);
            if(val[vec]>0)
                val[nod]+=val[vec];
        }
    if(val[nod]>sm)
        sm=val[nod];
    }
    return sm;
}

int main()
{
    int n;
    fin>>n;
    for(int i=1;i<=n;i++){
        fin>>val[i];
    }
    graf.resize(n+1);
    for(int i=1;i<n;i++){
        int nod1,nod2;
        fin>>nod1>>nod2;
        graf[nod1].push_back(nod2);
        graf[nod2].push_back(nod1);
    }
    cout<<DFS(1);

    return 0;
}