Cod sursa(job #2786095)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 20 octombrie 2021 11:18:47
Problema Cerere Scor 75
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.53 kb
#include<bits/stdc++.h>
using namespace std;
ifstream f("cerere.in");
ofstream g("cerere.out");
#define N 100100
int o[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])
        o[x]=o[s[t-k[x]]]+1;
    int i,j;
	for(i=0,j=v[x].size();i<j;++i)
		D(v[x][i]);
	--t;
}
int main ()
{
	for(f>>n,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<<o[i]<<' ';
	return 0;
}