Pagini recente » Cod sursa (job #639876) | Rating Copaciu Tiberiu George (TiberiuG) | Cod sursa (job #2099053) | Cod sursa (job #232391) | Cod sursa (job #3158097)
#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];
bool 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] = 1;
k[i] = nr;
fout<<nr + k[j]<<" ";
}
fin.close();
fout.close();
return 0;
}