Pagini recente » Cod sursa (job #130187) | Cod sursa (job #1554079) | Cod sursa (job #882568) | Cod sursa (job #1104218) | Cod sursa (job #332398)
Cod sursa(job #332398)
#include<stdio.h>
#define DIM 100001
struct nod
{
int x;
nod *urm;
};
nod *lst[DIM];
int b[DIM],c[DIM];
void add (int a,int b)
{
nod *p=new nod;
p->x=b;
p->urm=lst[a];
lst[a]=p;
}
void query1 (int a,int s)
{
nod *p;
int st=1,dr=1;
c[st]=a;
while(st<=dr)
{
b[c[st]]+=s;
for(p=lst[c[st]];p;p=p->urm)
c[++dr]=p->x;
++st;
}
}
int query2 (int s)
{
nod *p;
int st=1,dr=1;
c[st]=1;
while(st<=dr)
{
if(b[c[st]]==s)
return c[st];
for(p=lst[c[st]];p;p=p->urm)
c[++dr]=p->x;
++st;
}
return -1;
}
int main ()
{
freopen("arbore.in","r",stdin);
freopen("arbore.out","w",stdout);
int n,m,i,a,s,q,x,y;
scanf("%d%d",&n,&m);
for(i=1;i<n;++i)
{
scanf("%d%d",&x,&y);
if(x>y)
add(y,x);
else
add(x,y);
}
for(i=1;i<=m;++i)
{
scanf("%d",&q);
if(q==1)
scanf("%d%d",&a,&s),query1(a,s);
else
scanf("%d",&s),printf("%d\n",query2(s));
}
return 0;
}