#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define F first
#define S second
const int N = 1e5 + 15, LOG = 19;
int n, q, par[LOG][N], zr[N], sv[N], t = 1, root;
unordered_map<int, int> mp;
vector<int> adj[N];
bool ch[N];
set<int> s;
void ip() {
cin >> n >> q;
for (int i = 1; i <= n; i++) {
zr[i] = i;
int p;
cin >> p;
par[0][i] = p;
adj[p].push_back(i);
if (p == 0)
root = i;
}
}
void fix_par() {
for (int j = 1; j < LOG; j++)
for (int i = 1; i <= n; i++)
par[j][i] = par[j - 1][par[j - 1][i]];
}
void dfs(int v) {
for (auto u : adj[v]) {
dfs(u);
zr[v] = min(zr[v], zr[u]);
}
}
void fdfs(int v) {
for (auto u : adj[v])
fdfs(u);
sv[v] = t;
mp[t] = v;
s.insert(t);
t++;
}
bool cmp(int i, int j) {
return (zr[i] < zr[j]);
}
void fix() {
for (int i = 1; i <= n; i++)
sort(adj[i].begin(), adj[i].end(), cmp);
/* for (int i = 1; i <= n; i++) {
cout << i << " : ";
for (auto v : adj[i])
cout << v << " ";
cout << endl;
}*/
}
pair<int, int> get_par(int v) {
int cnt = 0;
for (int i = LOG - 1; ~i; i--) {
if (ch[par[i][v]]) {
cnt += (1 << i);
v = par[i][v];
}
}
return (make_pair(cnt, v));
}
void query() {
while (q--) {
int qu, f;
cin >> qu;
if (qu == 1) {
cin >> f;
int v;
while (f--) {
v = mp[*s.begin()];
s.erase(s.begin());
ch[v] = true;
// cout << v << " ";
}
// cout << endl;
cout << v << endl;
}
else {
cin >> f;
pair<int, int> ans = get_par(f);
// cout << ans.F << " " << ans.S << endl;
ch[ans.S] = false;
s.insert(sv[ans.S]);
cout << ans.F << endl;
}
}
}
void run() {
ip();
fix_par();
dfs(root);
fix();
fdfs(root);
query();
}
signed main() {
ios_base::sync_with_stdio(false), cin.tie(0), cout.tie(0);
run();
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
19036 KB |
Output is correct |
2 |
Correct |
81 ms |
27208 KB |
Output is correct |
3 |
Correct |
46 ms |
27044 KB |
Output is correct |
4 |
Correct |
3 ms |
18780 KB |
Output is correct |
5 |
Correct |
3 ms |
19036 KB |
Output is correct |
6 |
Correct |
3 ms |
19004 KB |
Output is correct |
7 |
Correct |
3 ms |
19036 KB |
Output is correct |
8 |
Correct |
3 ms |
19036 KB |
Output is correct |
9 |
Correct |
7 ms |
19292 KB |
Output is correct |
10 |
Correct |
16 ms |
20828 KB |
Output is correct |
11 |
Correct |
83 ms |
27048 KB |
Output is correct |
12 |
Correct |
47 ms |
26980 KB |
Output is correct |
13 |
Correct |
68 ms |
26980 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
25 ms |
22620 KB |
Output is correct |
2 |
Correct |
117 ms |
34412 KB |
Output is correct |
3 |
Correct |
66 ms |
30944 KB |
Output is correct |
4 |
Correct |
45 ms |
24244 KB |
Output is correct |
5 |
Correct |
45 ms |
23928 KB |
Output is correct |
6 |
Correct |
43 ms |
23728 KB |
Output is correct |
7 |
Correct |
44 ms |
23224 KB |
Output is correct |
8 |
Correct |
25 ms |
22620 KB |
Output is correct |
9 |
Correct |
106 ms |
34756 KB |
Output is correct |
10 |
Correct |
107 ms |
34432 KB |
Output is correct |
11 |
Correct |
90 ms |
34240 KB |
Output is correct |
12 |
Correct |
111 ms |
32956 KB |
Output is correct |
13 |
Correct |
63 ms |
35784 KB |
Output is correct |
14 |
Correct |
61 ms |
30952 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
51 ms |
26724 KB |
Output is correct |
2 |
Correct |
144 ms |
33472 KB |
Output is correct |
3 |
Correct |
83 ms |
33376 KB |
Output is correct |
4 |
Correct |
79 ms |
31100 KB |
Output is correct |
5 |
Correct |
80 ms |
30628 KB |
Output is correct |
6 |
Correct |
77 ms |
31028 KB |
Output is correct |
7 |
Correct |
86 ms |
29796 KB |
Output is correct |
8 |
Correct |
83 ms |
33392 KB |
Output is correct |
9 |
Correct |
133 ms |
35084 KB |
Output is correct |
10 |
Correct |
129 ms |
34496 KB |
Output is correct |
11 |
Correct |
144 ms |
35088 KB |
Output is correct |
12 |
Correct |
129 ms |
33288 KB |
Output is correct |
13 |
Correct |
132 ms |
38092 KB |
Output is correct |
14 |
Correct |
112 ms |
31672 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
139 ms |
35116 KB |
Output is correct |
2 |
Correct |
140 ms |
33272 KB |
Output is correct |
3 |
Correct |
71 ms |
37776 KB |
Output is correct |
4 |
Correct |
125 ms |
35012 KB |
Output is correct |
5 |
Correct |
140 ms |
34924 KB |
Output is correct |
6 |
Correct |
94 ms |
34544 KB |
Output is correct |
7 |
Correct |
127 ms |
33444 KB |
Output is correct |
8 |
Correct |
73 ms |
37572 KB |
Output is correct |
9 |
Correct |
61 ms |
31204 KB |
Output is correct |