제출 #867746

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