Pagini recente » Cod sursa (job #1924148) | Cod sursa (job #828079) | Cod sursa (job #1848536) | Cod sursa (job #143872) | Cod sursa (job #2439166)
#include <bits/stdc++.h>
using namespace std;
ifstream f("arbore.in");
ofstream g("arbore.out");
const int NMAX = 100005;
vector <int> v[NMAX];
int n,m,father[NMAX],val[NMAX];
bool ok;
void dfs(int nod){
for(auto it: v[nod])
if(it != father[nod]){
father[it] = nod;
dfs(it);
}
}
void DFS(int nod, int value){
val[nod] += value;
for(auto it: v[nod])
if(father[nod] != it){
DFS(it,value);
}
}
void Dfs(int nod, int value){
if(val[nod] == value){
g << nod << "\n";
ok = 1;
}else{
for(auto it: v[nod])
if(it != father[nod]){
if(!ok)
Dfs(it,value);
else
break;
}
}
}
int main(){
int i,j,x,y,type;
f >> n >> m;
for(i = 1 ; i < n; i++){
f >> x >> y;
v[x].push_back(y);
v[y].push_back(x);
}
dfs(1);
for(i = 1 ; i <= m ; i++){
f >> type;
if(type == 1){
f >> x >> y;
DFS(x,y);
}else{
ok = 0;
f >> x;
Dfs(1,x);
}
}
return 0;
}