Pagini recente » Cod sursa (job #2173755) | Cod sursa (job #1716068) | Cod sursa (job #1741269) | Cod sursa (job #271465) | Cod sursa (job #1193008)
#include<fstream>
#include<vector>
using namespace std;
ifstream in("arbore.in");
ofstream out("arbore.out");
int suma[100009];
vector<int> arbore[100009];
vector<int> h[1000009];
void del(int p,int val)
{
int i;
for(i = 0 ; i < h[val].size() ; i++)
if(h[val][i] == p) {h[val].erase(h[val].begin()+i);return;}
}
void adauga(int p,int val)
{
h[val].push_back(p);
}
void inc(int p,int val){
if(suma[p] != 0)
del(p,suma[p]);
suma[p]+=val;
adauga(p,suma[p]);
int i;
for(i = 0 ; i < arbore[p].size() ; i++)
inc(arbore[p][i],val);
}
int main()
{
int n,m;
in>>n>>m;
int i,x,y;
for(i = 1 ; i < n ; i++){
in>>x>>y;
arbore[x].push_back(y);
}
int cod,p,s;
for( ; m ; --m){
in>>cod;
if(cod == 1){
in>>p>>s;
inc(p,s);
}
if(cod == 2){
in>>s;
if(h[s].empty())
out<<-1<<"\n";
else out<<h[s][0]<<"\n";
}
}
return 0;
}