Cod sursa(job #726778)

Utilizator andreas_mihAndreas Mihaloianis andreas_mih Data 27 martie 2012 15:19:23
Problema Arbore Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.91 kb
#include<stdio.h>
#include<vector>
using namespace std;
FILE*in=fopen("arbore.in","r");
FILE*out=fopen("arbore.out","w");
void parcurgere(int x);
int nodes,ops,suma[100001],sum,node;
vector<int> a[100001];
int main()
{
	fscanf(in,"%d%d",&nodes,&ops);
	for(int i=1;i<nodes;++i)
	{
		int data1,data2;
		fscanf(in,"%d%d",&data1,&data2);
		a[data1].push_back(data2);
	}
	for(int i=1;i<=ops;++i)
	{
		int semn;
		fscanf(in,"%d",&semn);
		if(semn==1)
		{
			fscanf(in,"%d%d",&node,&sum);
			parcurgere(node);
		}
		else
		{
			int query;
			bool OK=true;
			fscanf(in,"%d",&query);
			for(int j=1;j<=nodes;++j)
				if(suma[j]==query)
				{
					fprintf(out,"%d\n",j);
					OK=false;
					break;
				}
			if(OK)
				fprintf(out,"-1");
		}
	}
	

	fclose(in);
	fclose(out);
return 0;	
}
void parcurgere(int x)
{
	suma[x]+=sum;
	for(int i=0;i<(int)a[x].size();++i)
		parcurgere(a[x][i]);
}