#include<bits/stdc++.h>
#define fi first
#define se second
#define pii pair<int,int>
#define mp make_pair
using namespace std;
const int N=1e5+5;
int n,q,mn[N],pos[N],cnt,col[N],p[N][20];
vector<int>adj[N];
void dfs(int u,int par=-1)
{
for(int i=1;i<=18;i++) p[u][i]=p[p[u][i-1]][i-1];
mn[u]=u;
for(auto&v:adj[u])
{
if(v==par) continue;
p[v][0]=u;
dfs(v,u);
mn[u]=min(mn[u],mn[v]);
}
}
void go(int u,int par=-1)
{
vector<pii>order;
for(auto&v:adj[u]) if(v!=par) order.push_back(mp(mn[v],v));
sort(order.begin(),order.end());
for(auto&v:order) go(v.se,u);
pos[u]=++cnt;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n>>q;
int root;
for(int i=1;i<=n;i++)
{
int p;
cin>>p;
if(!p) root=i;
else adj[p].push_back(i);
}
dfs(root);
go(root);
set<pii>empty_node;
for(int i=1;i<=n;i++) empty_node.insert(mp(pos[i],i));
while(q--)
{
int type,x;
cin>>type>>x;
int res=0;
if(type==1)
{
while(x--)
{
auto it=empty_node.begin();
res=(*it).se;
col[res]=1;
empty_node.erase(it);
}
cout<<res<<'\n';
continue;
}
for(int i=18;i>=0;i--)
{
if(col[p[x][i]]==1)
{
res+=(1<<i);
x=p[x][i];
}
}
empty_node.insert(mp(pos[x],x));
col[x]=0;
cout<<res<<'\n';
}
}
Compilation message
ballmachine.cpp: In function 'int main()':
ballmachine.cpp:48:7: warning: 'root' may be used uninitialized in this function [-Wmaybe-uninitialized]
48 | go(root);
| ~~^~~~~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
2688 KB |
Output is correct |
2 |
Correct |
154 ms |
14004 KB |
Output is correct |
3 |
Correct |
95 ms |
13944 KB |
Output is correct |
4 |
Correct |
2 ms |
2688 KB |
Output is correct |
5 |
Correct |
2 ms |
2688 KB |
Output is correct |
6 |
Correct |
3 ms |
2816 KB |
Output is correct |
7 |
Correct |
4 ms |
2816 KB |
Output is correct |
8 |
Correct |
3 ms |
2816 KB |
Output is correct |
9 |
Correct |
10 ms |
3456 KB |
Output is correct |
10 |
Correct |
26 ms |
5504 KB |
Output is correct |
11 |
Correct |
161 ms |
14200 KB |
Output is correct |
12 |
Correct |
94 ms |
13816 KB |
Output is correct |
13 |
Correct |
127 ms |
14200 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
42 ms |
8572 KB |
Output is correct |
2 |
Correct |
244 ms |
25568 KB |
Output is correct |
3 |
Correct |
110 ms |
18536 KB |
Output is correct |
4 |
Correct |
79 ms |
10144 KB |
Output is correct |
5 |
Correct |
82 ms |
9976 KB |
Output is correct |
6 |
Correct |
73 ms |
9976 KB |
Output is correct |
7 |
Correct |
77 ms |
8696 KB |
Output is correct |
8 |
Correct |
44 ms |
8696 KB |
Output is correct |
9 |
Correct |
215 ms |
25848 KB |
Output is correct |
10 |
Correct |
236 ms |
25592 KB |
Output is correct |
11 |
Correct |
200 ms |
25464 KB |
Output is correct |
12 |
Correct |
226 ms |
22520 KB |
Output is correct |
13 |
Correct |
170 ms |
28408 KB |
Output is correct |
14 |
Correct |
113 ms |
18536 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
103 ms |
14308 KB |
Output is correct |
2 |
Correct |
273 ms |
22776 KB |
Output is correct |
3 |
Correct |
180 ms |
26232 KB |
Output is correct |
4 |
Correct |
173 ms |
21140 KB |
Output is correct |
5 |
Correct |
181 ms |
20860 KB |
Output is correct |
6 |
Correct |
179 ms |
20856 KB |
Output is correct |
7 |
Correct |
177 ms |
18680 KB |
Output is correct |
8 |
Correct |
196 ms |
26160 KB |
Output is correct |
9 |
Correct |
261 ms |
26104 KB |
Output is correct |
10 |
Correct |
275 ms |
25848 KB |
Output is correct |
11 |
Correct |
282 ms |
25744 KB |
Output is correct |
12 |
Correct |
277 ms |
22904 KB |
Output is correct |
13 |
Correct |
281 ms |
32380 KB |
Output is correct |
14 |
Correct |
199 ms |
19432 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
256 ms |
26212 KB |
Output is correct |
2 |
Correct |
261 ms |
22776 KB |
Output is correct |
3 |
Correct |
191 ms |
31608 KB |
Output is correct |
4 |
Correct |
247 ms |
26072 KB |
Output is correct |
5 |
Correct |
267 ms |
25720 KB |
Output is correct |
6 |
Correct |
210 ms |
25592 KB |
Output is correct |
7 |
Correct |
256 ms |
22776 KB |
Output is correct |
8 |
Correct |
189 ms |
31608 KB |
Output is correct |
9 |
Correct |
110 ms |
18532 KB |
Output is correct |