Cod sursa(job #1883103)

Utilizator dragos_vecerdeaVecerdea Dragos dragos_vecerdea Data 17 februarie 2017 18:42:21
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include <stdio.h>
#include <vector>
using namespace std;
vector <int> muchie[100000];
char vizitat[100000];
int d[100000];
int maxim;
FILE *fin = fopen("asmax.in" ,"r");
FILE *fout = fopen("asmax.out", "w");
void DFS(int nod)
{
    vizitat[nod]=1;
    for(auto node:muchie[nod])
    {
        if(vizitat[node]==0)
        {
            DFS(node);
            if(d[node]>0)d[nod]+=d[node];
            if(d[nod]>maxim) maxim=d[nod];
        }

    }
}
int main()
{
    int n;
    fscanf(fin, "%d", &n);
    maxim = -(1<<30);
    for(int i=1;i<=n;i++)
    {
        fscanf(fin, "%d", &d[i]);
        if(maxim<d[i])maxim=d[i];
    }
    for(int i=1;i<n;i++)
    {
        int x, y;
        fscanf(fin, "%d%d", &x, &y);
        muchie[x].push_back(y);
        muchie[y].push_back(x);
    }

    DFS(1);
    fprintf(fout, "%d", maxim);
    return 0;
}