Pagini recente » Cod sursa (job #1718054) | Monitorul de evaluare | Cod sursa (job #1307598) | Cod sursa (job #693864) | Cod sursa (job #332371)
Cod sursa(job #332371)
#include<stdio.h>
#define DIM 100001
struct nod
{
int x;
nod *urm;
};
nod *lst[DIM];
int b[DIM],c[DIM],q2[DIM*10];
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;
b[a]+=s;
s=0;
int st=1,dr=1;
c[st]=a;
while(st<=dr)
{
s+=b[c[st]];
for(p=lst[c[st]];p;p=p->urm)
c[++dr]=p->x;
++st;
}
q2[s]=a;
}
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(x,y);
else
add(y,x);
}
for(i=1;i<=m;++i)
{
scanf("%d",&q);
if(q==1)
scanf("%d%d",&a,&s),query1(a,s);
else
{
scanf("%d",&s);
if(q2[s]==0)
printf("-1\n");
else
printf("%d\n",q2[s]);
}
}
return 0;
}