Cod sursa(job #1796695)

Utilizator nnnmmmcioltan alex nnnmmm Data 3 noiembrie 2016 18:03:02
Problema Asmax Scor 20
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
#include<cstdio>
#include<vector>
#include<algorithm>

const int NMAX=16001,INF=1<<30;

bool viz[NMAX];
int val[NMAX];
std::vector<int> vecini[NMAX];

void DFS(int nod)
{
 if(viz[nod])
    return;
 viz[nod]=true;
 for(std::vector<int>::iterator i=vecini[nod].begin();i!=vecini[nod].end();i++)
     {
      DFS(*i);
     }
 for(std::vector<int>::iterator i=vecini[nod].begin();i!=vecini[nod].end();i++)
     {
      val[nod]=std::max(val[nod],val[nod]+val[*i]);
     }
}

int main()
{
 FILE *in=fopen("asmax.in","r");
 int n;
 fscanf(in,"%d ",&n);
 for(int i=1;i<=n;i++)
     {
      fscanf(in,"%d ",&val[i]);
     }
 for(int i=1;i<=n-1;i++)
     {
      int x,y;
      fscanf(in,"%d %d ",&x,&y);
      vecini[x].push_back(y);
      vecini[y].push_back(x);
     }
 fclose(in);
 DFS(1);
 int rasp=-INF;
 for(int i=1;i<=n;i++)
     {
      rasp=std::max(rasp,val[i]);
     }
 FILE *out=fopen("asmax.out","w");
 fprintf(out,"%d\n",rasp);
 fclose(out);
}