Submission #591853

#TimeUsernameProblemLanguageResultExecution timeMemory
591853Quan2003Regions (IOI09_regions)C++17
75 / 100
8093 ms31760 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; const int sz=2e5+1; ll timer=1; int n,q,m,k,r; ll st[sz],en[sz]; ll a[sz]; vector<ll>col[25001]; vector<ll>to[25001]; ll up[17][sz]; ll par[sz]; vector<ll>adj[sz]; const int mod=1e9+7; void dfs(int u){ col[a[u]].push_back(timer); st[u]=timer++; for(auto v:adj[u]){ if(v==par[u]) continue; dfs(v); } en[u]=timer-1; } int main(){ cin>>n>>r>>q; cin>>a[1]; to[a[1]].push_back(1); for(int i=2;i<=n;i++){ cin>>par[i]>>a[i]; adj[par[i]].push_back(i); to[a[i]].push_back(i); } dfs(1); for(int i=0;i<q;i++){ ll u,w,res;cin>>u>>w; const auto &v=col[w];res=0; for(auto p:to[u]){ int x=upper_bound(v.begin(),v.end(),en[p])-lower_bound(v.begin(),v.end(),st[p]); res+=x; } cout<<res<<endl; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...