Cod sursa(job #3364760)
| Utilizator | Data | 10 septembrie 2026 20:11:36 | |
|---|---|---|---|
| Problema | Cerere | Scor | 0 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.62 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream fin("cerere.in");
ofstream fout("cerere.out");
int s[100001];
int k[100001];
int sol[100001];
vector<int> v[100001];
void dfs(int nod,int depth)
{
s[++depth] = nod;
if(k[nod]!=0)
sol[nod] = sol[s[depth-k[nod]]] + 1;
for(auto it:v[nod])
dfs(it , depth);
depth--;
}
int main()
{
int n,i,a,b;
fin>>n;
for(i=1;i<=n;i++)
fin>>k[i];
for(i=1;i<=n;i++)
{
fin>>a>>b;
v[a].push_back(b);
}
dfs(1,0);
for(i=1;i<=n;i++)
fout<<sol[i]<<' ';
return 0;
}
