Pagini recente » Cod sursa (job #697151) | Cod sursa (job #2886058) | Cod sursa (job #1003615) | Cod sursa (job #1072432) | Cod sursa (job #726778)
Cod sursa(job #726778)
#include<stdio.h>
#include<vector>
using namespace std;
FILE*in=fopen("arbore.in","r");
FILE*out=fopen("arbore.out","w");
void parcurgere(int x);
int nodes,ops,suma[100001],sum,node;
vector<int> a[100001];
int main()
{
fscanf(in,"%d%d",&nodes,&ops);
for(int i=1;i<nodes;++i)
{
int data1,data2;
fscanf(in,"%d%d",&data1,&data2);
a[data1].push_back(data2);
}
for(int i=1;i<=ops;++i)
{
int semn;
fscanf(in,"%d",&semn);
if(semn==1)
{
fscanf(in,"%d%d",&node,&sum);
parcurgere(node);
}
else
{
int query;
bool OK=true;
fscanf(in,"%d",&query);
for(int j=1;j<=nodes;++j)
if(suma[j]==query)
{
fprintf(out,"%d\n",j);
OK=false;
break;
}
if(OK)
fprintf(out,"-1");
}
}
fclose(in);
fclose(out);
return 0;
}
void parcurgere(int x)
{
suma[x]+=sum;
for(int i=0;i<(int)a[x].size();++i)
parcurgere(a[x][i]);
}