Cod sursa(job #2205242)

Utilizator ParketPatrick Josephs Parket Data 18 mai 2018 16:28:33
Problema Asmax Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include <stdbool.h>
#define N 16000
int n,vf[2*N], urm[2*N], lst[N], nr, conex, s[N], max=-16000000;
bool viz[N];
void add(int x, int y){
    nr++;
    vf[nr]=y;
    urm[nr]=lst[x];
    lst[x]=nr;
}
void dfs(int x){
    viz[x]=true;
    int p, y;
    p=lst[x];
    while(p!=0){
        y=vf[p];
        if(!viz[y]){
            dfs(y);
            if(s[y]>0)
                s[x]+=s[y];
        }
        p=urm[p];
    }
    if(s[x]>max)
        max=s[x];
}
int main()
{
    FILE *f1, *f2;
    int n, x, y, i;
    f1=fopen("asmax.in","r");
    fscanf(f1,"%d",&n);
    for(i=1;i<=n;i++){
        fscanf(f1,"%d",&s[i]);
    }
    for(i=0;i<n;i++){
        fscanf(f1,"%d%d",&x,&y);
        add(x,y);
        add(y,x);
    }
    dfs(1);
    f2=fopen("asmax.out","w");
    fprintf(f2,"%d",max);
    return 0;
}