Cod sursa(job #475799)

Utilizator aladinaladin aladinn aladin Data 8 august 2010 15:25:53
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include <cstdio>
#include <vector>
#define N 100003
using namespace std;

int v[N],nr,c[N];
vector <int> x[N];

void rez (int k)
{
	++nr;c[nr]=k;
	if (v[k]!=0) v[k]=v[c[nr-v[k]]]+1;
	vector<int> :: iterator it;
	for (it=x[k].begin();it!=x[k].end();++it) rez(*it);
	nr--;
}
int main()

{
	int n,i,s=0,j,a,b;
	
	freopen("cerere.in","r",stdin);
	freopen("cerere.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;++i) scanf("%d",&v[i]);
	for (i=1;i<n;++i) { scanf("%d %d",&a,&b); s+=b; x[a].push_back(b);}
	s=(n+1)*n/2-s;
	rez(s);
	for (i=1;i<=n;++i) printf("%d ",v[i]);
	return 0;}