Pagini recente » Cod sursa (job #239514) | Cod sursa (job #27761) | Cod sursa (job #1610755) | Cod sursa (job #216632) | Cod sursa (job #830728)
Cod sursa(job #830728)
#include<fstream>
#include<vector>
#define DIM 100010
using namespace std;
int n , i , K[DIM],a,b;
ifstream f("cerere.in");
ofstream g("cerere.out");
vector<int>L[DIM];
int stack[DIM];
int k;
int Str[DIM],Sol[DIM];
void dfs(int x){
stack[++k]=x;
Str[x]=stack[k-K[x]];
for(unsigned int i=0;i<L[x].size();i++){
dfs(L[x][i]);
k--;
}
}
int find_sol(int nod){
int k=0;
while(Str[nod]!=nod){
nod=Str[nod];
k++;
}
return k;
}
int main(){
f>>n;
for(i=1;i<=n;i++)
f>>K[i];
for(i=1;i<n;i++){
f>>a>>b;
L[a].push_back(b);
}
dfs(1);
for(i=1;i<=n;i++){
Sol[i]=find_sol(i);
g<<Sol[i]<<" ";
}
return 0;
}