제출 #867742

#제출 시각아이디문제언어결과실행 시간메모리
867742overwatch9Regions (IOI09_regions)C++17
13 / 100
923 ms131072 KiB
#include <iostream> #include <vector> #include <algorithm> #include <map> using namespace std; vector <vector <int>> adj; vector <int> col; vector <map <int, int>> freq; vector <vector <int>> regions; void dfs(int s, int p) { freq[s][col[s]] = 1; for (auto i : adj[s]) { if (i == p) continue; dfs(i, s); for (auto j : freq[i]) freq[s][j.first] += j.second; } } int main() { int n, r, q; cin >> n >> r >> q; col = vector <int> (n+1); adj.resize(n+1); regions.resize(r+1); freq.resize(n+1); cin >> col[1]; regions[col[1]].push_back(1); for (int i = 2; i <= n; i++) { int p, c; cin >> p >> c; adj[i].push_back(p); adj[p].push_back(i); col[i] = c; regions[c].push_back(i); } dfs(1, 1); while (q--) { int r1, r2; cin >> r1 >> r2; int ans = 0; for (auto i : regions[r1]) { ans += freq[i][r2]; } cout << ans << endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...