Pagini recente » Cod sursa (job #746894) | Cod sursa (job #3179362) | Cod sursa (job #443176) | Cod sursa (job #1772886) | Cod sursa (job #3158100)
#include <iostream>
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
const int LMAX = 100005;
int k[LMAX],father[LMAX], viz[LMAX];
int main(){
int n, i, j, nr, strp;
fin>>n;
for (i = 1; i <= n; i++) {
fin>>k[i];
}
for (i = 1; i < n; i++) {
int x, y;
fin>>x>>y;
father[y] = x;
}
for (i = 1; i <= n; i++) {
j = i;
nr = 0;
while (k[j] != 0 && !viz[j]) {
strp = k[j];///cati stramosi trb sa parcurg
for (int l = 0; l < strp; l++) {
j = father[j]; /// j devine stramosul curentului j
}
nr++;
}
viz[i] = nr;
fout<<nr+viz[j]<<" ";
}
fin.close();
fout.close();
return 0;
}