Pagini recente » Cod sursa (job #2236246) | Cod sursa (job #2334420) | Cod sursa (job #2095508) | Cod sursa (job #1626867) | Cod sursa (job #632079)
Cod sursa(job #632079)
#include <fstream>
#include <vector>
#include <cstring>
using namespace std;
int v[100001], n;
int p[100001], stiva[100001], depth = 1;
vector<int> a[100001];
void bfs(int poz)
{
int i;
if(v[poz] == 0)
p[poz] = 0;
else
p[poz] = p[stiva[depth - v[poz]]] + 1;
stiva[depth] = poz;
++depth;
for(i = 0; i < a[poz].size(); ++i)
bfs(a[poz][i]);
--depth;
}
int main()
{
int i, x, y, root;
ifstream f("cerere.in");
ofstream g("cerere.out");
f >> n;
root = n * (n + 1) / 2;
for(i = 1; i <= n; ++i)
f >> v[i];
for(i = 1; i <= n; ++i)
{
f >> x >> y;
a[x].push_back(y);
root -= y;
}
bfs(root);
for(i = 1; i <= n; ++i)
g << p[i] << ' ';
g.close();
return 0;
}