제출 #927256

#제출 시각아이디문제언어결과실행 시간메모리
927256LudisseyRegions (IOI09_regions)C++14
0 / 100
115 ms131072 KiB
#include <bits/stdc++.h>
#define int long long
using namespace std;
int N,R,Q; 
vector<vector<int>> child;
vector<int> r;
vector<vector<int>> cr;
vector<vector<int>> ans;

void dfs(int x){
    for (auto u : child[x])
    {
        dfs(u);
        for (int i = 0; i < R; i++)
        {
            cr[x][i]+=cr[u][i];
        }
        
    }
    for (int i = 0; i < R; i++) ans[r[x]][i]+=cr[x][i];
    cr[x][r[x]]++;
}

signed main() {
    ios_base::sync_with_stdio(false); cin.tie(nullptr);
	cin >>N>>R>>Q;
    child.resize(N+1);
    cr.resize(N+1,vector<int>(R,0));
    ans.resize(R,vector<int>(R,0));
    r.resize(N+1);


    cin >> r[0];
    r[0]--;
    for (int i=1; i < N; i++)
    {
        int p; cin >> p >> r[i];
        r[i]--;
        child[p-1].push_back(i);
    }
    dfs(0);
    for (int i = 0; i < Q; i++)
    {
        int e1,e2; cin>>e1>>e2;
        e1--;
        e2--;
        int as=ans[r[e1]][r[e2]];
        cout << as << "\n";
    }
    
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...