Pagini recente » Cod sursa (job #1313240) | Cod sursa (job #354143) | Cod sursa (job #2402539) | Cod sursa (job #2417012) | Cod sursa (job #1110283)
#include <iostream>
#include <vector>
#include <cstdio>
#define Nmax 100005
using namespace std;
vector<int> V[Nmax];
vector<int> ::iterator it;
int ar[Nmax],suma[Nmax];
int n,m,i,op,p,s;
int S[1000000];
void reading(int &n,int &m)
{
int k,x,y;
freopen("arbore.in","r",stdin);
freopen("arbore.out","w",stdout);
scanf("%d %d",&n,&m);
for(k=1;k<=n-1;++k)
{
scanf("%d %d",&x,&y);
ar[y]=x;
}
}
void boss(int nod)
{
int aux=nod;
V[nod].push_back(nod);
while(ar[nod]!=0)
{
nod=ar[nod];
V[nod].push_back(aux);
}
}
int main()
{
reading(n,m);
for(i=1;i<=n;++i) {boss(i);suma[i]=0;}
for(i=1;i<=1000000;++i) S[i]=0;
for(i=1;i<=m;++i)
{
scanf("%d",&op);
if (op==1)
{
scanf("%d %d",&p,&s);
for(it=V[p].begin();it!=V[p].end();++it)
{
suma[*it]=suma[*it]+s;
if (S[suma[*it]]==0) S[suma[*it]]=*it;
}
}
else
{
scanf("%d",&s);
printf("%d\n",S[s]);
}
}
return 0;
}