제출 #731491

#제출 시각아이디문제언어결과실행 시간메모리
731491Desh03Regions (IOI09_regions)C++17
35 / 100
8032 ms131072 KiB
#include <bits/stdc++.h> using namespace std; vector<vector<int>> r, g; vector<int> euler, in, out, fr, c; vector<vector<pair<int, int>>> q; int t; void dfs(int u) { in[u] = t++; euler.push_back(u); for (int v : g[u]) dfs(v); out[u] = t - 1; } int main() { int n, rr, qq; cin >> n >> rr >> qq; g.resize(n), r.resize(rr), in.resize(n), out.resize(n), fr.resize(rr), c.resize(n), q.resize(qq); vector<vector<int>> ans(rr, vector<int> (rr)); int x, h; cin >> h; h--; r[h].push_back(0); for (int i = 1; i < n; i++) { cin >> x >> h; x--, h--; r[h].push_back(i); g[x].push_back(i); c[i] = h; } dfs(0); for (int i = 0; i < rr; i++) { for (int u : r[i]) { for (int j = in[u] + 1; j <= out[u]; j++) fr[c[euler[j]]]++; } for (int j = 0; j < rr; j++) ans[i][j] = fr[j], fr[j] = 0; } while (qq--) { int a, b; cin >> a >> b; cout << ans[--a][--b] << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...