#include <bits/stdc++.h>
using namespace std;
int par[100005][17], mn[100005], t[100005], tt;
vector<int> child[100005];
set<pair<int, int> > s;
bool ball[100005];
bool cmp(int u, int v)
{
return mn[u]<mn[v];
}
void dfs(int u)
{
mn[u]=u;
for (int v:child[u])
{
dfs(v);
mn[u]=min(mn[u], mn[v]);
}
}
void dfs2(int u)
{
sort(child[u].begin(), child[u].end(), cmp);
for (int v:child[u])
dfs2(v);
t[u]=++tt;
// cout << "t[" << u << "]=" << t[u] << '\n';
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n, q, r;
cin >> n >> q;
for (int i=1; i<=n; i++)
{
cin >> par[i][0];
child[par[i][0]].push_back(i);
if (!par[i][0])
r=i;
}
for (int i=1; i<=16; i++)
for (int j=1; j<=n; j++)
par[j][i]=par[par[j][i-1]][i-1];
dfs(r);
dfs2(r);
for (int i=1; i<=n; i++)
s.insert({t[i], i});
for (int i=1; i<=q; i++)
{
int x, y;
cin >> x >> y;
if (x==1)
{
for (int j=1; j<=y; j++)
{
int u=s.begin()->second;
s.erase({t[u], u});
ball[u]=1;
// cout << "set ball[" << u << "] to 1\n";
if (j==y)
cout << u << '\n';
}
}
else
{
int cnt=0;
for (int j=16; j>=0; j--)
{
if (ball[par[y][j]])
{
y=par[y][j];
cnt+=1<<j;
}
}
s.insert({t[y], y});
ball[y]=0;
// cout << "set ball[" << y << "] to 0\n";
cout << cnt << '\n';
}
}
return 0;
}
Compilation message
ballmachine.cpp: In function 'int main()':
ballmachine.cpp:46:9: warning: 'r' may be used uninitialized in this function [-Wmaybe-uninitialized]
46 | dfs2(r);
| ~~~~^~~
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
2 ms |
2684 KB |
Output is correct |
2 |
Correct |
100 ms |
11996 KB |
Output is correct |
3 |
Correct |
62 ms |
12184 KB |
Output is correct |
4 |
Correct |
1 ms |
2644 KB |
Output is correct |
5 |
Correct |
2 ms |
2644 KB |
Output is correct |
6 |
Correct |
2 ms |
2772 KB |
Output is correct |
7 |
Correct |
3 ms |
2772 KB |
Output is correct |
8 |
Correct |
2 ms |
2772 KB |
Output is correct |
9 |
Correct |
7 ms |
3284 KB |
Output is correct |
10 |
Correct |
19 ms |
5028 KB |
Output is correct |
11 |
Correct |
101 ms |
11980 KB |
Output is correct |
12 |
Correct |
60 ms |
12108 KB |
Output is correct |
13 |
Correct |
88 ms |
12080 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
30 ms |
6592 KB |
Output is correct |
2 |
Correct |
140 ms |
19404 KB |
Output is correct |
3 |
Correct |
76 ms |
16456 KB |
Output is correct |
4 |
Correct |
55 ms |
7996 KB |
Output is correct |
5 |
Correct |
77 ms |
7848 KB |
Output is correct |
6 |
Correct |
50 ms |
7804 KB |
Output is correct |
7 |
Correct |
53 ms |
7140 KB |
Output is correct |
8 |
Correct |
30 ms |
6604 KB |
Output is correct |
9 |
Correct |
128 ms |
19928 KB |
Output is correct |
10 |
Correct |
141 ms |
19608 KB |
Output is correct |
11 |
Correct |
112 ms |
19404 KB |
Output is correct |
12 |
Correct |
142 ms |
17936 KB |
Output is correct |
13 |
Correct |
96 ms |
20720 KB |
Output is correct |
14 |
Correct |
76 ms |
16456 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
62 ms |
11340 KB |
Output is correct |
2 |
Correct |
159 ms |
18460 KB |
Output is correct |
3 |
Correct |
115 ms |
19096 KB |
Output is correct |
4 |
Correct |
100 ms |
16500 KB |
Output is correct |
5 |
Correct |
103 ms |
16240 KB |
Output is correct |
6 |
Correct |
98 ms |
16168 KB |
Output is correct |
7 |
Correct |
97 ms |
15292 KB |
Output is correct |
8 |
Correct |
102 ms |
19128 KB |
Output is correct |
9 |
Correct |
176 ms |
20240 KB |
Output is correct |
10 |
Correct |
159 ms |
19620 KB |
Output is correct |
11 |
Correct |
171 ms |
19660 KB |
Output is correct |
12 |
Correct |
153 ms |
18464 KB |
Output is correct |
13 |
Correct |
168 ms |
23340 KB |
Output is correct |
14 |
Correct |
124 ms |
16580 KB |
Output is correct |
# |
결과 |
실행 시간 |
메모리 |
Grader output |
1 |
Correct |
155 ms |
20220 KB |
Output is correct |
2 |
Correct |
172 ms |
18676 KB |
Output is correct |
3 |
Correct |
108 ms |
23116 KB |
Output is correct |
4 |
Correct |
149 ms |
20200 KB |
Output is correct |
5 |
Correct |
151 ms |
19692 KB |
Output is correct |
6 |
Correct |
121 ms |
19636 KB |
Output is correct |
7 |
Correct |
160 ms |
18380 KB |
Output is correct |
8 |
Correct |
106 ms |
23128 KB |
Output is correct |
9 |
Correct |
75 ms |
16488 KB |
Output is correct |