Cod sursa(job #1759383)

Utilizator alex.craciunCraciun Alexandru alex.craciun Data 18 septembrie 2016 23:21:31
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.96 kb
#include <iostream>
#include <cstdio>
#include <vector>
#include <limits.h>
using namespace std;
FILE *f=fopen("asmax.in","r");
int n,m,x[16100],used[16100];
vector <int> lv[16100];
int maxi=INT_MIN;
void citire( )
{
    fscanf(f,"%d",&n);
    for(int i=1; i<=n; i++)
        fscanf(f,"%d",&x[i]);
    int a,b;
    for(int i=1; i<n; i++)
    {
        fscanf(f,"%d%d",&a,&b);
        lv[a].push_back(b);
        lv[b].push_back(a);
    }
}

void dfs(int nod1, int nod2)
{
    used[nod1]=1;
    vector <int>:: iterator ii;
    for(ii=lv[nod1].begin(); ii!=lv[nod1].end(); ++ii)
        if(!used[*ii])
            dfs(*ii,nod1);
    for(ii=lv[nod1].begin(); ii!=lv[nod1].end(); ++ii)
        if(*ii!=nod2&&x[*ii]>0)
            x[nod1]+=x[*ii];

    maxi=max(maxi,x[nod1]);
}
void afishare( )
{
    FILE *f1=fopen("asmax.out","w");
    fprintf(f1,"%d%",maxi);
}
int main()
{
    citire();
    dfs(1,0);
    afishare();
    return 0;
}