Pagini recente » Cod sursa (job #70498) | Cod sursa (job #2957265) | Cod sursa (job #1073974) | Cod sursa (job #1779311) | Cod sursa (job #2980734)
#include <fstream>
using namespace std;
const int N = 100000;
int pas[N + 1];
int t[N + 1];
int drum(int a, int k)
{
while (k > 0)
{
a = t[a];
k --;
}
return a;
}
int dist(int a)
{
if (pas[a] == 0)
{
return 0;
}
return 1 + dist(drum(a, pas[a]));
}
int main()
{
ifstream in("cerere.in");
ofstream out("cerere.out");
int n;
in >> n;
for (int i = 1; i <= n; i ++)
{
in >> pas[i];
}
for (int i = 1; i < n; i ++)
{
int x, y;
in >> x >> y;
t[y] = x;
}
for (int i = 1; i <= n; i ++)
{
out << dist(i) << ' ';
}
in.close();
out.close();
return 0;
}