Pagini recente » Cod sursa (job #22) | Cod sursa (job #2703121) | Cod sursa (job #256461) | Cod sursa (job #1638933) | Cod sursa (job #2570624)
//Pentru Vamy
#include<bits/stdc++.h>
using namespace std;
const int NAX = 1e5 + 5;
ifstream f("cerere.in");
ofstream g("cerere.out");
int n, k[ NAX ], start, c[ NAX ], sol[ NAX ], cate;
vector<int>G[NAX];
void DFS(int node )
{
if(k[ node ])
{
sol[ node ] = sol[ c[ cate - k[ node ] + 1] ] + 1;
}
c[ ++cate ] = node;
for(auto it: G[ node ])
{
DFS(it);
}
--cate;
}
int main()
{
f >> n;
for(int i = 1 ; i <= n ; ++i)
{
f >> k[ i ];
}
for(int x, y, i = 1 ; i < n ; ++i)
{
f >> x >> y;
G[ x ].push_back(y);
}
for(int i = 1 ; i <= n ; ++i)
{
if(!k[ i ])
{
start = i; break;
}
}
DFS(start);
for(int i = 1 ; i <= n ; ++i)
g << sol[ i ] << ' ';
}