Cod sursa(job #3306583)

Utilizator SGLDCASA SI PODUL SGLD Data 12 august 2025 13:37:50
Problema Cerere Scor 5
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.02 kb
#include <fstream>
#include<vector>
using namespace std;
ifstream in("cerere.in");
ofstream out("cerere.out");
int nr[100001];
int dp[100001];
int cnt=0,ram=0;
int nr1=1;
int what=0;
vector<int> se[100001];
void dfs(int sursa)
{
    if(ram)
    {
        ram--;
        dfs(se[sursa][0]);
    }
    else{
    nr1++;
    }
    if(!what && dp[sursa])
    {
        nr1+=dp[sursa];
        what=1;
        return;
    }
    if(!what && !nr[sursa]){
    what=1;
    }
    else if(!what){
    ram=nr[sursa];
    dfs(se[sursa][0]);
    dp[sursa]=nr1;
    }
}
int main()
{
    int n,a,b;
    in>>n;
    for(int i=1; i<=n; i++)
    {
        in>>nr[i];
    }
    for(int i=1; i<=n-1; i++)
    {
        in>>a>>b;
        se[b].push_back(a);
    }
    for(int i=1; i<=n; i++)
    {
        dp[i-1]=nr1;
        nr1=0;
        what=0;
        ram=nr[i];
        if(nr[i]==0){
        out<<0<<" ";
        }
        else{
        dfs(i);
        out<<nr1<<" ";
        }
    }
    return 0;
}