Cod sursa(job #1901351)

Utilizator nartorrewrew narto Data 3 martie 2017 21:28:34
Problema Asmax Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <fstream>
#include <vector>
#define nmax 16005

using namespace std;

ifstream f("asmax.in");
ofstream g("asmax.out");


vector<vector<unsigned int> >v(nmax);
int q[nmax], viz[nmax], n, k[nmax], s[nmax];


void citire()
{ int i, a, b;
      f>>n;
    for(i=1;i<=n;i++)
        f>>k[i];
    for(i=1;i<n;i++)
    {  f>>a>>b;
    q[b]=1;
        v[a].push_back(b);
        v[b].push_back(a);
    }
}
void dfs(int x)
{
    for(vector <unsigned int> :: iterator it=v[x].begin();it!=v[x].end();it++){
        int y=*it;
        if(viz[y]==0)
        {  viz[y]=1;
           dfs(y);
           if(s[y]>0) s[x]+=s[y];
        }
    }
    s[x]+=k[x];
}

int main()
{ int i;
    citire();
    for(i=1;i<=n;i++)
        if(q[i]==0)
    { viz[i]=1;
    dfs(i);
    }
    int m=-1<<20;
    for(i=1;i<=n;i++) m=max(m,s[i]);
    g<<m;
}