Submission #477611

#TimeUsernameProblemLanguageResultExecution timeMemory
477611Abrar_Al_SamitRegions (IOI09_regions)C++17
40 / 100
8077 ms28592 KiB
#include<bits/stdc++.h> using namespace std; const int maxn = 2e5 + 5; vector <int> g[maxn]; int H[maxn], ans, in[maxn], out[maxn], timer; vector <int> reg[maxn]; void Euler(int v, int p ){ in[v] = timer++; for(auto it : g[v]) if(it!=p) { Euler(it, v); } out[v] = timer++; } bool anc(int x, int y) { return in[x]<=in[y] && out[x]>=out[y]; } int main() { int N, R, Q; cin >> N >> R >> Q; cin >> H[1]; reg[H[1]].push_back(1); for(int i=2; i<=N; ++i) { int p; cin >> p >> H[i]; g[p].push_back(i); g[i].push_back(p); reg[H[i]].push_back(i); } Euler(1, 1); while(Q--) { int r1, r2; cin >> r1 >> r2; int ans = 0; for(auto it : reg[r2]) { int cur = 0; for(auto it2 : reg[r1]) { cur += anc(it2, it); } ans += cur; } cout << ans << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...