Cod sursa(job #1841049)

Utilizator Ruxandra985Nanu Ruxandra Laura Ruxandra985 Data 5 ianuarie 2017 11:26:44
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <cstdio>
#include <vector>

using namespace std;
int v[16001],f[16001],s[16001];
vector <int> l[16001];
int maxi=-2000000000;
void dfs (int nod){
    f[nod]=1;
    int sfii = 0;
    for (int i=0;i<l[nod].size();i++){
        int vecin=l[nod][i];
        if (f[vecin]==0){
            dfs (vecin);
            if (s[vecin] >= 0)
                sfii+=s[vecin];
        }
    }
    s[nod]=sfii+v[nod];
    maxi=max(maxi, s[nod]);
}
int main()
{
    FILE *fin=fopen ("asmax.in","r");
    FILE *fout=fopen ("asmax.out","w");
    int n,i,a,b;
    fscanf (fin,"%d",&n);
    for (i=1;i<=n;i++)
        fscanf (fin,"%d",&v[i]);
    while (fscanf (fin,"%d%d",&a,&b)==2){
        l[a].push_back(b);
        l[b].push_back(a);
    }
    dfs (1);
    fprintf (fout,"%d",maxi);
    return 0;
}