Cod sursa(job #562470)

Utilizator AndreiRSStatescu Andrei Rares AndreiRS Data 23 martie 2011 09:22:14
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <fstream>
#include <vector>
using namespace std;
#define DIM 100005

ifstream fi ("cerere.in");
ofstream fo ("cerere.out");

int N, K[DIM], C[DIM], S[DIM];
vector <int> F[DIM];

void dfs (int n, int niv)
{
	S[niv] = n;
	if (K[n]) 
		C[n] = C[S[niv - K[n]]] + 1;
	for (int i = 0; i < F[n].size(); i++)
		dfs (F[n][i], niv + 1);
}

int main ()
{
	fi >> N;
	for (int i = 1; i <= N; i++)
		fi >> K[i];
	for (int i = 1, a, b; i <= N - 1; i++)
	{	
		fi >> a >> b;
		F[a].push_back (b);
	}	
	
	dfs (1, 1);
	
	for (int i = 1; i <= N; i++)
		fo << C[i] << ' ';
	return 0;
}