#include <bits/stdc++.h>
#define FOR(i, x, y) for (int i = x; i < y; i++)
typedef long long ll;
using namespace std;
struct Node {
int id, order;
};
bool operator<(Node A, Node B) {
return A.order < B.order;
}
vector<int> graph[100001];
int ancestor[100001][20], least_child[100001], order[100001], cnt = 1;
bool emp[100001];
set<Node> no_ball;
bool cmp(int A, int B) {
return least_child[A] < least_child[B];
}
void find_least_children(int node = 0) {
least_child[node] = node;
FOR(i, 1, 20) {
if (!ancestor[node][i - 1]) break;
ancestor[node][i] = ancestor[ancestor[node][i - 1]][i - 1];
}
for (int i : graph[node]) {
ancestor[i][0] = node;
find_least_children(i);
least_child[node] = min(least_child[node], least_child[i]);
}
}
void dfs(int node = 0) {
for (int i : graph[node]) dfs(i);
order[node] = cnt++;
if (node) no_ball.insert({node, order[node]});
emp[node] = true;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
int n, q;
cin >> n >> q;
FOR(i, 1, n + 1) {
int p;
cin >> p;
graph[p].push_back(i);
}
find_least_children();
FOR(i, 1, n + 1) sort(graph[i].begin(), graph[i].end(), cmp);
dfs();
while (q--) {
int t, x;
cin >> t >> x;
if (t == 1) {
FOR(i, 1, x) {
emp[(*no_ball.begin()).id] = false;
no_ball.erase(no_ball.begin());
}
cout << (*no_ball.begin()).id << '\n';
emp[(*no_ball.begin()).id] = false;
no_ball.erase(no_ball.begin());
} else {
int lca = x, ans = 0;
for (int i = 19; ~i; i--) {
if (ancestor[lca][i] && !emp[ancestor[lca][i]]) {
ans += (1<<i);
lca = ancestor[lca][i];
}
}
emp[lca] = true;
no_ball.insert({lca, order[lca]});
cout << ans << '\n';
}
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
8 ms |
2808 KB |
Output is correct |
2 |
Correct |
132 ms |
12792 KB |
Output is correct |
3 |
Correct |
84 ms |
12920 KB |
Output is correct |
4 |
Correct |
4 ms |
2680 KB |
Output is correct |
5 |
Correct |
4 ms |
2680 KB |
Output is correct |
6 |
Correct |
5 ms |
2808 KB |
Output is correct |
7 |
Correct |
5 ms |
2936 KB |
Output is correct |
8 |
Correct |
5 ms |
2808 KB |
Output is correct |
9 |
Correct |
10 ms |
3340 KB |
Output is correct |
10 |
Correct |
26 ms |
5240 KB |
Output is correct |
11 |
Correct |
152 ms |
12760 KB |
Output is correct |
12 |
Correct |
83 ms |
12920 KB |
Output is correct |
13 |
Correct |
114 ms |
12796 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
42 ms |
7160 KB |
Output is correct |
2 |
Correct |
194 ms |
21468 KB |
Output is correct |
3 |
Correct |
112 ms |
17652 KB |
Output is correct |
4 |
Correct |
75 ms |
8668 KB |
Output is correct |
5 |
Correct |
76 ms |
8824 KB |
Output is correct |
6 |
Correct |
68 ms |
8380 KB |
Output is correct |
7 |
Correct |
71 ms |
7544 KB |
Output is correct |
8 |
Correct |
44 ms |
7160 KB |
Output is correct |
9 |
Correct |
166 ms |
21880 KB |
Output is correct |
10 |
Correct |
191 ms |
21792 KB |
Output is correct |
11 |
Correct |
168 ms |
22068 KB |
Output is correct |
12 |
Correct |
200 ms |
20028 KB |
Output is correct |
13 |
Correct |
136 ms |
23596 KB |
Output is correct |
14 |
Correct |
106 ms |
17816 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
88 ms |
12920 KB |
Output is correct |
2 |
Correct |
217 ms |
20728 KB |
Output is correct |
3 |
Correct |
154 ms |
21624 KB |
Output is correct |
4 |
Correct |
149 ms |
18424 KB |
Output is correct |
5 |
Correct |
148 ms |
18040 KB |
Output is correct |
6 |
Correct |
156 ms |
18092 KB |
Output is correct |
7 |
Correct |
139 ms |
16632 KB |
Output is correct |
8 |
Correct |
154 ms |
21588 KB |
Output is correct |
9 |
Correct |
210 ms |
22648 KB |
Output is correct |
10 |
Correct |
226 ms |
22236 KB |
Output is correct |
11 |
Correct |
227 ms |
22008 KB |
Output is correct |
12 |
Correct |
206 ms |
20472 KB |
Output is correct |
13 |
Correct |
218 ms |
26744 KB |
Output is correct |
14 |
Correct |
173 ms |
18548 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
318 ms |
23236 KB |
Output is correct |
2 |
Correct |
211 ms |
20608 KB |
Output is correct |
3 |
Correct |
159 ms |
27000 KB |
Output is correct |
4 |
Correct |
205 ms |
23416 KB |
Output is correct |
5 |
Correct |
209 ms |
22620 KB |
Output is correct |
6 |
Correct |
186 ms |
22896 KB |
Output is correct |
7 |
Correct |
211 ms |
21344 KB |
Output is correct |
8 |
Correct |
296 ms |
27188 KB |
Output is correct |
9 |
Correct |
119 ms |
18696 KB |
Output is correct |