Submission #1210401

#TimeUsernameProblemLanguageResultExecution timeMemory
1210401spampotsRegions (IOI09_regions)C++17
0 / 100
44 ms28196 KiB
#include<bits/stdc++.h>
using namespace std;


int main(){
    ios_base::sync_with_stdio(false); cin.tie(nullptr);
    int N, R, Q;
    cin >> N >> R >> Q;

    vector<vector<int>> adj(N+1);
    vector<int> region(N+1);
    vector<vector<int>> comp(R+1);

    cin >> region[1];
    for(int i = 2; i <= N; ++i){
        int x;  cin >> x;
        adj[x].push_back(i);
        cin >> region[i];
    }
    
    int timer(0);
    vector<int> in(N+1), out(N+1), euler(N+1);
    function<void(int)> dfs = [&](int node){
        in[node] = timer++;
        euler[in[node]] = node;
        comp[region[node]].push_back(in[node]);
        for(int x : adj[node])
            dfs(x);
        out[node] = timer;
    };
    dfs(1);

    for(int i = 0; i < Q; ++i){
        int r1, r2; cin >> r1 >> r2;
        int ans(0);
        for(int x : comp[r1])
            ans += lower_bound(comp[r2].begin(), comp[r2].end(), out[euler[x]]) - lower_bound(comp[r2].begin(), comp[r2].end(), x);
        cout << ans << '\n';
        fflush(stdout);
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...