#include <bits/stdc++.h>
#define pii pair<int, int>
#define x first
#define y second
using namespace std;
const int N = 1e5+5;
int n, q, rot;
int mn[N], dep[N], par[N][18];
int pos[N], chk[N];
vector<int> g[N], V;
priority_queue<pii, vector<pii>, greater<pii> > Q;
int proc(int u, int p) {
par[u][0] = p, dep[u] = dep[p] + 1, mn[u] = u;
for(int i = 1; i <= 17; i++) par[u][i] = par[par[u][i-1]][i-1];
for(int v : g[u]) mn[u] = min(mn[u], proc(v, u));
sort(g[u].begin(), g[u].end(), [&](const int &a, const int &b) {
return mn[a] < mn[b];
});
return mn[u];
}
void dfs(int u) {
for(int v : g[u]) dfs(v);
V.emplace_back(u);
}
int main() {
scanf("%d %d", &n, &q);
for(int i = 1, a; i <= n; i++) {
scanf("%d", &a);
if(a) g[a].emplace_back(i);
else rot = i;
}
proc(rot, 0), dfs(rot);
for(int i = 1; i <= n; i++) pos[V[i-1]] = i;
for(int i = 1; i <= n; i++) Q.emplace(pos[i], i);
for(int i = 1, T, a; i <= q; i++) {
scanf("%d %d", &T, &a);
if(T == 1) {
int now = -1;
while(a--) {
pii u = Q.top(); Q.pop();
chk[u.y] = true;
now = u.y;
}
printf("%d\n", now);
} else {
int b = a;
for(int i = 17; ~i; i--) if(chk[par[b][i]]) b = par[b][i];
chk[b] = false;
Q.emplace(pos[b], b);
printf("%d\n", dep[a] - dep[b]);
}
}
return 0;
}
Compilation message
ballmachine.cpp: In function 'int main()':
ballmachine.cpp:34:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %d", &n, &q);
~~~~~^~~~~~~~~~~~~~~~~
ballmachine.cpp:36:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d", &a);
~~~~~^~~~~~~~~~
ballmachine.cpp:44:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
scanf("%d %d", &T, &a);
~~~~~^~~~~~~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
5 ms |
2688 KB |
Output is correct |
2 |
Correct |
134 ms |
11604 KB |
Output is correct |
3 |
Correct |
75 ms |
11348 KB |
Output is correct |
4 |
Correct |
5 ms |
2732 KB |
Output is correct |
5 |
Correct |
4 ms |
2688 KB |
Output is correct |
6 |
Correct |
5 ms |
2816 KB |
Output is correct |
7 |
Correct |
6 ms |
2816 KB |
Output is correct |
8 |
Correct |
6 ms |
2720 KB |
Output is correct |
9 |
Correct |
14 ms |
3336 KB |
Output is correct |
10 |
Correct |
31 ms |
4984 KB |
Output is correct |
11 |
Correct |
177 ms |
11808 KB |
Output is correct |
12 |
Correct |
95 ms |
11508 KB |
Output is correct |
13 |
Correct |
152 ms |
11628 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
61 ms |
7156 KB |
Output is correct |
2 |
Correct |
266 ms |
19592 KB |
Output is correct |
3 |
Correct |
109 ms |
14668 KB |
Output is correct |
4 |
Correct |
103 ms |
8408 KB |
Output is correct |
5 |
Correct |
109 ms |
8280 KB |
Output is correct |
6 |
Correct |
96 ms |
8172 KB |
Output is correct |
7 |
Correct |
88 ms |
7468 KB |
Output is correct |
8 |
Correct |
46 ms |
7028 KB |
Output is correct |
9 |
Correct |
271 ms |
19764 KB |
Output is correct |
10 |
Correct |
219 ms |
19184 KB |
Output is correct |
11 |
Correct |
186 ms |
19180 KB |
Output is correct |
12 |
Correct |
230 ms |
17384 KB |
Output is correct |
13 |
Correct |
172 ms |
20960 KB |
Output is correct |
14 |
Correct |
128 ms |
14820 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
106 ms |
11400 KB |
Output is correct |
2 |
Correct |
247 ms |
17880 KB |
Output is correct |
3 |
Correct |
187 ms |
19424 KB |
Output is correct |
4 |
Correct |
165 ms |
16228 KB |
Output is correct |
5 |
Correct |
180 ms |
15984 KB |
Output is correct |
6 |
Correct |
180 ms |
15900 KB |
Output is correct |
7 |
Correct |
188 ms |
14620 KB |
Output is correct |
8 |
Correct |
192 ms |
19564 KB |
Output is correct |
9 |
Correct |
238 ms |
20020 KB |
Output is correct |
10 |
Correct |
280 ms |
19504 KB |
Output is correct |
11 |
Correct |
251 ms |
19488 KB |
Output is correct |
12 |
Correct |
240 ms |
17904 KB |
Output is correct |
13 |
Correct |
319 ms |
23904 KB |
Output is correct |
14 |
Correct |
165 ms |
15580 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
270 ms |
19944 KB |
Output is correct |
2 |
Correct |
299 ms |
17896 KB |
Output is correct |
3 |
Correct |
190 ms |
23204 KB |
Output is correct |
4 |
Correct |
267 ms |
20080 KB |
Output is correct |
5 |
Correct |
268 ms |
19312 KB |
Output is correct |
6 |
Correct |
226 ms |
19432 KB |
Output is correct |
7 |
Correct |
249 ms |
17948 KB |
Output is correct |
8 |
Correct |
181 ms |
23148 KB |
Output is correct |
9 |
Correct |
114 ms |
14764 KB |
Output is correct |