Submission #1316981

#TimeUsernameProblemLanguageResultExecution timeMemory
1316981aaaaaaaaRegions (IOI09_regions)C++20
0 / 100
140 ms196608 KiB
#include <bits/stdc++.h>
using namespace std;
const int mxN = 2e5 + 10;
const int mxR = 305;
vector<int> adj[mxN];
int ans[mxR][mxR], freq[mxN], r[mxN];
void dfs(int u = 1){
    freq[r[u]] += 1;
    vector<int> x(mxR + 10, 0);
    for(int j = 0; j < mxR; ++j) x[j] = freq[j];
    for(auto it : adj[u]) dfs(it);
    for(int j = 0; j < mxR; ++j) ans[r[u]][j] += freq[j] - x[j];
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(nullptr); cout.tie(nullptr);
    int n, k, q;
    cin >> n >> k >> q >> r[1];
    for(int i = 2, p; i <= n; ++i){
        cin >> p >> r[i];
        adj[p].push_back(i);
    }
    dfs();
    while(q--){
        int r1, r2;
        cin >> r1 >> r2;
        cout << ans[r1][r2] << "\n";
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...