제출 #627300

#제출 시각아이디문제언어결과실행 시간메모리
627300clamsRegions (IOI09_regions)C++17
30 / 100
846 ms45468 KiB
#include <bits/stdc++.h> using namespace std; const int N = 2e5 + 5; const int R = 25e3 + 5; const int Q = 2e5 + 5; int n, r, q; int home[N], par[N]; vector<int> adj[N]; const int R1 = 505; map<int, int> mp[N]; int pre[R1][R1]; void dfs(int u, int p) { for (int v : adj[u]) { if (v == p) continue; dfs(v, u); if (mp[u].size() < mp[v].size()) swap(mp[u], mp[v]); for (auto i : mp[v]) mp[u][i.first] += i.second; } for (auto i : mp[u]) { pre[home[u]][i.first] += i.second; } mp[u][home[u]]++; } signed main() { ios::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> r >> q; cin >> home[1]; for (int i = 2; i <= n; i++) { cin >> par[i] >> home[i]; adj[par[i]].push_back(i); adj[i].push_back(par[i]); } if (r < R1) { dfs(1, 0); while (q--) { int r1, r2; cin >> r1 >> r2; cout << pre[r1][r2] << endl; } } else { assert(false); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...