Pagini recente » Cod sursa (job #1680389) | Cod sursa (job #1208195) | Monitorul de evaluare | Cod sursa (job #2539819) | Cod sursa (job #2680004)
#include <bits/stdc++.h>
using namespace std;
ifstream f("arbore.in");
ofstream g("arbore.out");
int nr[200005],arb[800005],q,n,m,x,y,i,viz[200005],rad,prim[200005],ult[200005],tip,sol;
vector <int> v[100005];
void dfs (int x)
{
int i;
nr[++q]=x;
for (i=0;i<v[x].size();i++)
{
dfs(v[x][i]);
nr[++q]=x;
}
}
int main()
{
f>>n>>m;
for (i=1;i<n;i++)
{
f>>x>>y;
viz[y]=1;
v[x].push_back(y);
}
for (i=1;i<=n;i++)
{
if (viz[i]==0)
{
rad=i;
break;
}
}
dfs(rad);
for (i=1;i<=q;i++)
{
if (prim[nr[i]]==0)
{
prim[nr[i]]=i;
}
ult[nr[i]]=i;
}
for (;m--;)
{
f>>tip;
if (tip==1)
{
f>>x>>y;
arb[prim[x]]+=y;
arb[ult[x]+1]-=y;
}
else
{
f>>y;
sol=-1;
int val=0;
for (i=1;i<=q;i++)
{
val+=arb[i];
if (val==y)
{
sol=nr[i];
}
}
g<<sol<<'\n';
}
}
return 0;
}