Pagini recente » Cod sursa (job #1290055) | Cod sursa (job #1395750) | Cod sursa (job #593977) | Cod sursa (job #2170280) | Cod sursa (job #643589)
Cod sursa(job #643589)
#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;
}