제출 #1328742

#제출 시각아이디문제언어결과실행 시간메모리
1328742aloszaRegions (IOI09_regions)C++20
0 / 100
5428 ms9880 KiB
#include <bits/stdc++.h>

using namespace std;

vector<vector<int>> graph;
int reg[200005];

int num[200005];
int dp[200005];

void dfs(int v, int r1, int r2)
{
    num[v] = reg[v] == r2;
    dp[v] = 0;
    for(int i : graph[v])
    {
        dfs(i, r1, r2);
        dp[v] += dp[i];
        num[v] += num[i];
    }
    if(reg[v] == r1) dp[v] += num[v];
}

signed main()
{
    cin.tie(0)->sync_with_stdio(0);
    int n, r, q;
    cin >> n >> r >> q;

    graph.resize(n);
    for(int i = 0; i < n; i++) cin >> reg[i];

    for(int i = 1; i < n; i++)
    {
        int a;
        cin >> a;
        a--;
        graph[a].push_back(i);
    }

    while(q--)
    {
        int r1, r2;
        cin >> r1 >> r2;

        dfs(0, r1, r2);
        cout << dp[0] << "\n";
        cout.flush();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...