Pagini recente » Cod sursa (job #2843057) | Cod sursa (job #1931369) | Cod sursa (job #642608) | Cod sursa (job #1490508) | Cod sursa (job #2456019)
#include <fstream>
#include <vector>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
vector <int> graph[100001];
int st[100001], v[100001], i, n, a, b, d[100001];
bool viz[100001];
void dfs(int node, int level){
st[level] = node;
d[node] = d[st[level - v[node]]] + 1;
for(int i = 0; i < graph[node].size(); i++)
dfs(graph[node][i], level + 1);
}
int main()
{ f >> n;
for(i = 1; i <= n; i++)
f >> v[i];
for(i = 1; i <= n - 1; i++){
f >> a >> b;
graph[a].push_back(b);
viz[b] = 1;
}
i = 1;
while(viz[i] != 0)
i++;
dfs(i, 1);
for(i = 1; i <= n; i++)
g << d[i] - 1 << ' ';
return 0;
}