Pagini recente » Cod sursa (job #846867) | Cod sursa (job #2964057) | Cod sursa (job #1412984) | Cod sursa (job #115447) | Cod sursa (job #2813148)
#include <bits/stdc++.h>
using namespace std;
vector <int> g[100005];
int ans[100005], v[100005], P[100005];
bool ok[100005];
void dfs(int aux, int niv)
{
ok[aux] = 1;
P[niv] = aux;
ans[aux] = ans[P[niv-v[aux]]] + 1;
for(auto x : g[aux])
{
int y = x;
if(!ok[y])
{
dfs(y, niv+1);
}
}
}
int main()
{
ifstream cin("cerere.in");
ofstream cout("cerere.out");
int n;
cin >> n;
for(int i = 1; i <= n; i++)
{
cin >> v[i];
ans[i] = -1;
}
int x = n * (n + 1) / 2;
int a, b;
for(int i = 1; i <= n - 1; i++)
{
cin >> a >> b;
g[a].push_back(b);
x -= b;
}
dfs(x, 1);
for(int i = 1; i <= n; i++)
{
cout << ans[i] << " ";
}
return 0;
}