Cod sursa(job #1796716)

Utilizator nnnmmmcioltan alex nnnmmm Data 3 noiembrie 2016 18:19:28
Problema Asmax Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>
#include<vector>
#include<algorithm>
const int NMAX=16001,INF=2000000000;
bool viz[NMAX];
int val[NMAX];
std::vector<int> vecini[NMAX];
void DFS(int nod)
{
 if(viz[nod])
    return;
 viz[nod]=true;
 for(int i=0;i<vecini[nod].size();i++)
     {
      DFS(vecini[nod][i]);
      if(val[vecini[nod][i]]>0)
         val[nod]+=val[vecini[nod][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);
     }
 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/2+1);
}