Nu aveti permisiuni pentru a descarca fisierul grader_test10.ok
Cod sursa(job #2923470)
| Utilizator | Data | 14 septembrie 2022 15:53:35 | |
|---|---|---|---|
| Problema | Cerere | Scor | 100 |
| Compilator | cpp-64 | Status | done |
| Runda | Arhiva de probleme | Marime | 0.81 kb |
#include <bits/stdc++.h>
using namespace std;
ifstream r("cerere.in");
ofstream w("cerere.out");
int n, aux, k[100003], t[100003], s[100003], sol[100003];
vector<int> l[100003];
void dfs(int nod,int niv) {
s[niv]=nod;
if (k[nod]==0){
sol[nod]=0;
}
else{
sol[nod]=1+sol[s[niv-k[nod]]];
}
for (int i=0;i<l[nod].size();i++){
dfs(l[nod][i],niv+1);
}
}
int main() {
r>>n;
for (int i=1;i<=n;i++){
r>>k[i];
}
for (int i=1;i<n;i++) {
int x, y;
r>>x>>y;
l[x].push_back(y);
t[y]=x;
}
for (int i=1;i<=n;i++){
if (t[i]==0) {
aux=i;
break;
}
}
dfs(aux,1);
for (int i=1;i<=n;i++){
w<<sol[i]<<" ";
}
return 0;
}
