Cod sursa(job #508274)

Utilizator Cristy94Buleandra Cristian Cristy94 Data 7 decembrie 2010 22:45:53
Problema Cerere Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.75 kb
#include<stdio.h>
#include<vector>
#define nmax 100001
using namespace std;
FILE *f=fopen("cerere.in","r");
FILE *g=fopen("cerere.out","w");
int d[nmax],t[nmax],x,y,ns,stramos[nmax],level,sol[nmax],ok[nmax],N;
vector <int> a[nmax];
void df(int nod){
	stramos[++level]=nod,sol[nod]=sol[stramos[level-d[nod]]]+1,ok[nod]=1;
	for(int i=0;i<a[nod].size();i++)
		if(!ok[a[nod][i]])
			df(a[nod][i]);
	--level;	
}
int main(){
	//citire
	fscanf(f,"%d",&N);
	for(int i=1;i<=N;i++)
		fscanf(f,"%d",&x),d[i]=x;
	for(int i=1;i<=N;i++)
		fscanf(f,"%d%d",&x,&y),a[x].push_back(y),t[y]=x;
	//cautam nodul sursa
	for(ns=1;ns<=N;ns++)
		if(!t[ns])
			break;
	//df din nodul sursa
		df(ns);
	for(int i=1;i<=N;i++)
		fprintf(g,"%d ",sol[i]-1);
return 0;
}