Pagini recente » Cod sursa (job #653874) | Cod sursa (job #782254) | Cod sursa (job #2053292) | Cod sursa (job #3004247) | Cod sursa (job #981375)
Cod sursa(job #981375)
#include<fstream>
#include<vector>
#include<set>
#define NMAX 100005
using namespace std;
ifstream fin("arbore.in");
ofstream fout("arbore.out");
int n,m;
vector<int> G[NMAX],line;
set<int> sums[10*NMAX];
int val[NMAX],first[NMAX],last[NMAX];
void read()
{
fin>>n>>m;
for(int i=1,x,y;i<n;i++)
{
fin>>x>>y;
G[x].push_back(y);
G[y].push_back(x);
}
}
void DFS(int nod,int tt)
{
line.push_back(nod);
first[nod]=line.size()-1;
for(size_t i=0;i<G[nod].size();i++)
if(G[nod][i]!=tt)
DFS(G[nod][i],nod);
last[nod]=line.size()-1;
}
void solve()
{
DFS(1,0);
for(int choice,x,y;m;m--)
{
fin>>choice;
if(choice==1)
{
fin>>x>>y;
for(int i=first[x];i<=last[x];i++)
{
sums[val[line[i]]].erase(line[i]);
sums[val[line[i]]+y].insert(line[i]);
val[line[i]]+=y;
}
continue;
}
fin>>x;
if(sums[x].empty())
fout<<"-1\n";
else
fout<<*(sums[x].begin())<<'\n';
}
}
int main()
{
read();
solve();
return 0;
}