Submission #912719

#TimeUsernameProblemLanguageResultExecution timeMemory
912719anarch_yRegions (IOI09_regions)C++17
14 / 100
8096 ms27896 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define all(x) begin(x), end(x) #define sz(x) (int)x.size() #define pb push_back const int maxn = 200001; vector<int> adj[maxn]; int home[maxn], dp[maxn]; int ans; void dfs(int s, int p, int r1, int r2){ dp[s] = 0; if(home[s] == r2) dp[s] = 1; for(auto u: adj[s]){ if(u == p) continue; dfs(u, s, r1, r2); dp[s] += dp[u]; } if(home[s] == r1) ans += dp[s]; } int main(){ ios::sync_with_stdio(0); cin.tie(0); int N, R, Q; cin >> N >> R >> Q; int h; cin >> h; home[1] = h; for(int i=2; i<=N; i++){ int p, g; cin >> p >> g; adj[i].pb(p); adj[p].pb(i); home[i] = g; } while(Q--){ int r1, r2; cin >> r1 >> r2; ans = 0; dfs(1, 0, r1, r2); cout << ans << "\n"; cout.flush(); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...