Submission #1050421

#TimeUsernameProblemLanguageResultExecution timeMemory
1050421LudisseyRegions (IOI09_regions)C++17
13 / 100
693 ms131072 KiB
#include <bits/stdc++.h> #define int long long #define sz(a) (int)a.size() #define all(a) a.begin(), a.end() using namespace std; vector<vector<int>> child; vector<unordered_map<int,int>> kp; vector<int> parent; vector<int> rg; vector<vector<int>> pr; vector<vector<pair<int,int>>> qPR; vector<unordered_map<int,bool>> qHAS; vector<unordered_map<int,int>> mp; vector<int> out; int need; int sq; unordered_map<int,int> kpp(int x){ vector<unordered_map<int,int>> mpVEC; mp[x][rg[x]]=1; for (auto u : child[x]) mpVEC.push_back(kpp(u)); for (int i = 0; i < sz(mpVEC); i++) { for (auto u : mpVEC[i]) { mp[x][u.first]+=u.second; } } return mp[x]; } signed main() { ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,R,Q; cin >> N >> R >> Q; child.resize(N); kp.resize(N); parent.resize(N); mp.resize(N); qHAS.resize(R); rg.resize(N); pr.resize(R); sq=600; cin >> rg[0]; rg[0]--; pr[rg[0]].push_back(0); for (int i = 1; i < N; i++) { cin >> parent[i] >> rg[i]; parent[i]--; rg[i]--; child[parent[i]].push_back(i); pr[rg[i]].push_back(i); } qPR.resize(R); out.resize(Q); kpp(0); for (int i = 0; i < Q; i++) { int e1,e2; cin >> e1>>e2; e1--; e2--; int sm=0; for (auto x : pr[e1]) { sm+=mp[x][e2]; } cout << sm << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...