Cod sursa(job #2593434)

Utilizator Andrew09Mocanu Octavian Andrew09 Data 3 aprilie 2020 20:34:30
Problema Cerere Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
vector <int> q[100010];
int a[100010],b[100010],t[100010],rad,n,i,j,k,nr;
bool viz[100010];
void dfs(int i)
{ if(a[i]!=0)
{
b[i]=b[t[nr-a[i]+1]]+1;//cout<<i<<" "<<y<<" "<<b[i]<<" "<<b[y]<<"\n";
}
t[++nr]=i;
  for(vector <int> ::iterator it=q[i].begin();it<q[i].end();it++)
    dfs(*it);
nr--;
}
int main()
{ f>>n;
for(k=1;k<=n;k++)
    f>>a[k];
for(k=1;k<n;k++)
{f>>i>>j;viz[j]=0;
  q[i].push_back(j);
}
for(i=1;i<=n;i++)
  if(viz[i]==0) {rad=i;break;}
dfs(rad);
for(i=1;i<=n;i++)
    g<<b[i]<<" ";
    return 0;
}