Pagini recente » Cod sursa (job #3250114) | Cod sursa (job #1026840) | Cod sursa (job #2922864) | Cod sursa (job #821025) | Cod sursa (job #2673376)
#include<bits/stdc++.h>
#define maxn 100005
using namespace std;
int maimuta[maxn], stramos[maxn], nr[maxn], maimute, x, y;
vector <int> fii[maxn];
ifstream fin("cerere.in");
ofstream fout("cerere.out");
void rezolva(int nod) {
int cauta = nod;
while (maimuta[nod]--)
cauta = stramos[cauta];
nr[nod] = nr[cauta] + 1;
if (cauta == nod)
nr[cauta]--;
for (auto fiu : fii[nod])
rezolva(fiu);
}
int main() {
fin >> maimute;
for (int i = 1; i <= maimute; i++)
fin >> maimuta[i];
for (int j = 1; j < maimute; j++) {
fin >> x >> y;
stramos[y] = x;
fii[x].push_back(y);
}
for (int i = 1; i <= maimute; i++)
if (stramos[i] == 0) {
rezolva(i);
break;
}
for (int i = 1; i <= maimute; i++)
fout << nr[i] << " ";
}