Pagini recente » Cod sursa (job #2078966) | Cod sursa (job #1443205) | Cod sursa (job #3238179) | Cod sursa (job #615571) | Cod sursa (job #2792504)
#include<fstream>
#include<vector>
using namespace std;
ifstream cin("cerere.in");
ofstream cout("cerere.out");
int X;
vector<vector<int>>v;
vector<int>dist;
vector<int>sol;
int Q[100000];
void DFS(int nod, int ind)
{
Q[ind] = nod;
sol[nod] = sol[Q[ind - dist[nod]]] + 1;
for(int i = 0; i < v[nod].size(); i++)
{
DFS(v[nod][i],ind + 1);
}
}
int main()
{
cin.tie(NULL); cout.tie(NULL);
cin >> X;
dist.resize(X);
v.resize(X);
sol.resize(X);
int ind = false;
for(int i = 0; i < X; i++)
{
cin >> dist[i];
ind = (ind ^ i);
}
for(int i = 0; i < X - 1; i++)
{
int V1, V2;
cin >> V1 >> V2;
V1--, V2--;
v[V1].push_back(V2);
ind = ind ^ V2;
}
DFS(ind, false);
for(int i = 0; i < X; i++)
{
cout << sol[i] - 1 << ' ';
}
return false;
}