Cod sursa(job #2457423)

Utilizator anamariatoaderAna Toader anamariatoader Data 17 septembrie 2019 18:43:21
Problema Cerere Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
#include <vector>

using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");

int n,i,x,y,v[100005],a[100005],t[100005],s[100005],k;
vector <int> g[100005];

void dfs(int x){
    s[++k]=x;
    if(v[x]==0)
        a[x]=0;
    else
        a[x]=a[s[k-v[x]]]+1;
    for(int j=0;j<g[x].size();j++)
        dfs(g[x][j]);
    k--;
}

int main(){
    fin>>n;
    for(i=1;i<=n;i++)
        fin>>v[i];
    for(i=1;i<n;i++){
        fin>>x>>y;
        t[y]=x;
        g[x].push_back(y);
    }
    for(i=1;i<=n;i++)
      if(t[i]==0){
         dfs(i);
         break;
      }
    for(i=1;i<=n;i++)
        fout<<a[i]<<' ';
    return 0;
}