Cod sursa(job #806849)

Utilizator ichigo2908mantu radu ichigo2908 Data 3 noiembrie 2012 17:13:17
Problema Cerere Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>
#include <vector>
using namespace std;

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

const int N=100001;
vector <int> v[N], a;
int n, k[N];

void citire()
{
	int iTemp1, iTemp2;
	
	in>>n;
	for(int i=1;i<=n;i++)
		in>>k[i];
	for(int i=0;i<n;i++)
	{
		in>>iTemp1>>iTemp2;
		v[iTemp1].push_back(iTemp2);
	}
}

void dfs(size_t x, int lvl)
{
	out<<x<<":";
	if(k[x]==0)
		{
			out<<"0 ";
			a.push_back(0);
		}
		else
		{
			out<<a[lvl-k[x]]+1<<' ';
			a.push_back(a[lvl-k[x]]+1);
		}
	for(size_t i=0;i<v[x].size();i++)
		dfs(v[x][i],lvl+1);
	a.pop_back();
}

int main()
{
	citire();
	dfs(1,0);
	
	in.close();
	out.close();
	
	return 0;
}