This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+10;
const int maxr = 510;
typedef long long ll;
int n, R, q;
int region[maxn];
ll ans[maxr][maxr];
vector<int> grafo[maxn];
int dfs(int u, int p, int r)
{
int qtd = 0;
if (region[u] == r)
qtd = 1;
for (auto v: grafo[u])
{
if (v == p) continue;
qtd += dfs(v, u, r);
}
ans[region[u]][r] += 1ll*qtd;
return qtd;
}
int main(void)
{
cin >> n >> R >> q;
cin >> region[1];
for (int i = 2; i <= n; i++)
{
int p;
cin >> p >> region[i];
grafo[i].push_back(p); grafo[p].push_back(i);
}
for (int i = 1; i <= R; i++)
dfs(1, 0, i);
for (int i = 1; i <= q; i++)
{
int r1, r2;
cin >> r1 >> r2;
cout << ans[r1][r2] << endl;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |