Cod sursa(job #2778905)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 2 octombrie 2021 13:15:12
Problema Cerere Scor 95
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<bits/stdc++.h>
#define N 100100
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
int u[N],s[N],i,x,y,t,T[N],k[N],n;
vector<int> v[N];
void D(int x)
{
	s[++t]=x;
	if(k[x])
        u[x]=u[s[t-k[x]]]+1;
	for(int i=0,j=v[x].size();i<j;++i)
		D(v[x][i]);
	--t;
}
int main ()
{
	f>>n;
	for(i=1;i<=n;++i)
		f>>k[i];
	for(i=1;i<n;++i)
		f>>x>>y,v[x].push_back(y),T[y]=1;
	for(i=1;i<=n;++i)
		if(!T[i]) {
			D(i);
			break;
		}
	for(i=1;i<=n;++i)
		g<<u[i]<<" ";
	return 0;
}