Cod sursa(job #2094075)

Utilizator tziplea_stefanTiplea Stefan tziplea_stefan Data 25 decembrie 2017 00:43:11
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#include <vector>
#define VAL 100005

using namespace std;

ifstream fin("cerere.in");
ofstream fout("cerere.out");

int N, K[VAL], i, j;
int A, B, ans[VAL];
int st[VAL], top, stram;
vector <int> G[VAL];

void DFS(int nod)
{
	vector <int> :: iterator it;
	st[++top]=nod;
	for (it=G[nod].begin(); it!=G[nod].end(); it++)
	{
		stram=st[top-K[*it]+1];
		if (K[*it]>0)
		  ans[*it]=ans[stram]+1;
		DFS(*it);
		top--;
	}
}	

int main()
{
	fin >> N;
	for (i=1; i<=N; i++)
	  fin >> K[i];
	for (i=1; i<N; i++)
	{
		fin >> A >> B;
		G[A].push_back(B);
	}
	DFS(1);
	for (i=1; i<=N; i++)
	  fout << ans[i] << " ";
	fin.close();
	fout.close();
	return 0;
}