Pagini recente » Cod sursa (job #896582) | Cod sursa (job #253848) | Cod sursa (job #928210) | Cod sursa (job #35353) | Cod sursa (job #2768871)
#include <bits/stdc++.h>
using namespace std;
ifstream f("arbore.in");
ofstream g("arbore.out");
int n,m,i,sum[100001];
bool vf[100001];
vector <int> a[100001];
void dfs(int nod, int s) {
vf[nod]=1;
sum[nod]+=s;
for(auto j: a[nod])
if(!vf[j])
dfs(j,s);
}
int main() {
f>>n>>m;
for(i=1; i<=n-1; i++) {
int x,y;
f>>x>>y;
a[x].push_back(y);
}
for(i=1; i<=m; i++) {
int x;
f>>x;
if(x==1) {
int p,s;
f>>p>>s;
memset(vf,false,sizeof(vf));
dfs(p,s);
} else {
int s;
f>>s;
int ok=1;
for(int j=1; j<=n && ok; j++)
if(sum[j]==s)
g<<j<<'\n', ok=0;
if(ok)
g<<"-1\n";
}
}
return 0;
}