제출 #116142

#제출 시각아이디문제언어결과실행 시간메모리
116142luciocfRegions (IOI09_regions)C++14
30 / 100
1254 ms53624 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...