Pagini recente » Cod sursa (job #873318) | Cod sursa (job #394485) | Cod sursa (job #313856) | Cod sursa (job #1001848) | Cod sursa (job #2454718)
#include <fstream>
using namespace std;
ifstream cin("cerere.in");
ofstream cout("cerere.out");
int v[100000+7];
int tata[100000+7];
int len[100000+7];
int dfs(int poz) {
if(len[poz] != -1) return len[poz];
int track = poz;
for(int i = 0; i < v[poz]; i++) {
track = tata[track];
}
len[poz] = dfs(track) + 1;
return len[poz];
}
int main()
{
int n, x, y; cin >> n;
for(int i = 0; i < n; i++) {
cin >> v[i];
len[i] = -1;
if(v[i] == 0) len[i] = 0;
}
for(int i = 1; i < n; i++) {cin >> x >> y; tata[y-1] = x-1;}
for(int i = 0; i < n; i++) cout << dfs(i) << " ";
}