제출 #92033

#제출 시각아이디문제언어결과실행 시간메모리
92033ngot23Ball Machine (BOI13_ballmachine)C++11
100 / 100
235 ms27504 KiB
#include <bits/stdc++.h> #define rep(i, a, b) for(int i=(a) ; i<=(b) ; ++i) #define mp make_pair #define pii pair<int, int> #define PB push_back #define F first #define S second #define Task " 12 toan 2 " using namespace std; const int N=100005; int n, Q, root, par[N][20], mn[N], h[N], flag[N]; vector <int > g[N]; int cnt, b[N], dd[N]; priority_queue <int > q; void setup() { cin >> n >> Q; rep(i, 1, n) { int u; cin >> u; if(u==0) root=i; else g[u].PB(i); } } void DFS(int u) { mn[u]=u; for(int v:g[u]) { par[v][0]=u; rep(i, 1, 16) par[v][i]=par[par[v][i-1]][i-1]; h[v]=h[u]+1; DFS(v); mn[u]=min(mn[u], mn[v]); } } bool cmp(int u, int v) { return mn[u]<mn[v]; } void xuli(int u) { sort(g[u].begin(), g[u].end(), cmp); for(int v:g[u]) xuli(v); b[++cnt]=u; flag[u]=cnt; q.push(-cnt); } int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); //freopen(Task".inp", "r", stdin); //freopen(Task".out", "w", stdout); setup(); DFS(root); xuli(root); while(Q--) { int t, k; cin >> t >> k; if(t==1) { int id; while(k--) { id=-q.top(); q.pop(); dd[b[id]]=1; } cout << b[id] << '\n'; } else { int x=k; for(int i=17 ; i>=0 ; --i) { if(dd[par[x][i]]) { x=par[x][i]; } } cout << h[k]-h[x] << '\n'; dd[x]=0; q.push(-flag[x]); } } return 0; }

컴파일 시 표준 에러 (stderr) 메시지

ballmachine.cpp: In function 'int main()':
ballmachine.cpp:59:17: warning: 'id' may be used uninitialized in this function [-Wmaybe-uninitialized]
             int id;
                 ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...