Pagini recente » Cod sursa (job #2148841) | Cod sursa (job #2496382) | Cod sursa (job #1056636) | Cod sursa (job #1506741) | Cod sursa (job #2813149)
#include <bits/stdc++.h>
#define int long long
using namespace std;
vector <int> g[100001];
int ans[100001], v[100001], P[100001];
bool ok[100001];
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);
}
}
}
int32_t 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;
}