제출 #867751

#제출 시각아이디문제언어결과실행 시간메모리
867751overwatch9Regions (IOI09_regions)C++17
30 / 100
3640 ms131072 KiB
#include <iostream> #include <vector> #include <algorithm> #include <map> using namespace std; vector <vector <int>> adj; vector <int> col; vector <vector <int>> ans; vector <vector <int>> freq, regions; int n, r, q; void dfs(int s, int p) { freq[s][col[s]]++; for (auto i : adj[s]) { if (i == p) continue; dfs(i, s); for (int j = 1; j <= r; j++) freq[s][j] += freq[i][j]; } } int main() { cin >> n >> r >> q; col = vector <int> (n+1); adj.resize(n+1); ans.resize(n+1); freq = vector <vector <int>> (n+1, vector <int> (r+1)); regions.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[col[i]].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 << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...