Cod sursa(job #643589)

Utilizator lily3Moldovan Liliana lily3 Data 3 decembrie 2011 22:29:44
Problema Arbore Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;

int i,j,n,m,x,y,tip,p,s,sum[100001],s1[1000001],viz[1000001],max1=0;
vector<int> a[100001];
void init()
{
	for(int i=1;i<=n;++i)
		viz[i]=0;
}
void det(int x,int suma)
{
	int i;
	viz[x]=1;
	sum[x]+=suma;
	if(sum[x]>max1)
		max1=sum[x];
	for(i=0;i<a[x].size();++i)
		if(!viz[a[x][i]])
			det(a[x][i],suma);
}
int cauta(int x,int max1)
{
	int ok=1;
	for(int i=1;i<=max1;++i)
		if(sum[i]==x)
			return i;
		return -1;
}
int main()
{
	ifstream f("arbore.in");
	ofstream g("arbore.out");
	f>>n>>m;
	for(i=1;i<n;++i)
	{
		f>>x>>y;
		a[x].push_back(y);
	}
	for(i=1;i<=m;++i)
	{
		f>>tip;
		init();
		if(tip==1)
		{
			f>>p>>s;
			det(p,s);
		}
		else
		{
			f>>s;
			g<<cauta(s,max1)<<"\n";
			/*if(s1[s])
			g<<s1[s]<<"\n";
			else
				g<<"-1"<<"\n";*/
		}
	}
	return 0;
}