Pagini recente » Cod sursa (job #2664720) | Cod sursa (job #493190) | Cod sursa (job #2771238) | Cod sursa (job #659541) | Cod sursa (job #2651518)
#include <iostream>
#include <fstream>
#define NMAX 100003
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n, ancestorsLvl[NMAX], father[NMAX];
void read(){
int a,b;
f >> n;
for (int i = 0; i < n; i++){
f >> ancestorsLvl[i+1];
//g << ancestorsLvl[i+1];
}
for (int i = 1; i < n; i++){
f >> a >> b;
father[b] = a;
}
}
int ancesLvl(int node, int lvl){
for (int i = 0; i < lvl; i++)
node = father[node];
return node;
}
int resolve(int node, int nr){
if (ancestorsLvl[node] == 0)
return nr;
else
return resolve(ancesLvl(node,ancestorsLvl[node]), nr+1);
}
int main()
{
read();
for (int i = 1; i <= n; i++)
g << resolve(i,0) << " ";
return 0;
}