Cod sursa(job #2138743)

Utilizator luanastLuana Strimbeanu luanast Data 21 februarie 2018 20:55:30
Problema Asmax Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream fin ("asmax.in");
ofstream fout ("asmax.out");
vector <int> L[16010];
int f[16010],viz[16010],s,c[16010],k,n,i,x,y,nod,D[16010],sol[16010],t;
void dfs(int nod){
    viz[nod]=1;
    for(int i=0;i<L[nod].size();i++){
        int nodv=L[nod][i];
        if(viz[nodv]!=1){
            dfs(nodv);
            if(D[nod]+D[nodv]>D[nod]){
                D[nod]+=D[nodv];
                ++k;
            }
        }
    }
}

int main(){
    fin>>n;
    for(i=1;i<=n;i++){
        fin>>c[i];
        D[i]=c[i];
    }
    for(i=1;i<n;i++){
        fin>>x>>y;
        L[x].push_back(y);
        L[y].push_back(x);
        f[y]=1;
    }
    for(i=1;i<=n;i++)
        if(f[i]==0){
            nod=i;
            break;
        }
    dfs(nod);
    fout<<k+1;
}