Cod sursa(job #3332759)

Utilizator andrei1232008nicolae andrei andrei1232008 Data 9 ianuarie 2026 08:23:59
Problema Asmax Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("asmax.in");
ofstream fout("asmax.out");
const int lim=16e4;
int i,n,x,y,cnt[lim+10],cnt2[lim+10],a[lim+10],head,d[lim+10];
bool viz[lim+10];
vector <int> v[lim+10],r[lim+10];
queue <int> q;
int main()
{
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>a[i];
    for(i=1;i<=n-1;i++)
    {
        fin>>x>>y;
        v[x].push_back(y);
        r[y].push_back(x);
        cnt[y]=1;
        cnt2[x]=1;
    }
    for(i=1;i<=n;i++)
    {
        if(cnt[i]==0){head=i;}
        if(cnt2[i]==0){q.push(i);d[i]=a[i];viz[i]=1;}
    }
    while(!q.empty())
    {
        int l=q.front();
        for(auto x:r[l])
        {
            if(viz[x]==0)
            {
                viz[x]=1;
                q.push(x);
            }
        }
        d[l]=a[l];
        for(auto x:v[l])
        {
            if(d[x]>0)d[l]+=d[x];
        }
        q.pop();
    }
    fout<<d[head];
    return 0;
}