제출 #477607

#제출 시각아이디문제언어결과실행 시간메모리
477607Abrar_Al_SamitRegions (IOI09_regions)C++17
0 / 100
8096 ms28520 KiB
#include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5 + 5;
vector <int> g[maxn];
int H[maxn], ans, in[maxn], out[maxn], timer;
vector <int> reg[maxn];
void Euler(int v, int p ){
	in[v] = timer++;
	for(auto it : g[v]) if(it!=p) {
		Euler(it, v);
	}
	out[v] = timer++;
}
bool anc(int x, int y) {
	return in[x]<=in[y] && out[x]>=out[y];
}
int main() {
	int N, R, Q; cin >> N >> R >> Q;
	cin >> H[1];
	reg[H[1]].push_back(1);
	for(int i=2; i<=N; ++i) {
		int p; cin >> p >> H[i];
		g[p].push_back(i);
		g[i].push_back(p);
		reg[H[i]].push_back(i);
	}
	Euler(1, 1);
	while(Q--) {
		int r1, r2; cin >> r1 >> r2;
		int ans = 0;
		for(auto it : reg[r2]) {
			bool ok = false;
			for(auto it2 : reg[r1]) {
				ok |= anc(it2, it);
			}
			ans += ok;
		}
		cout << ans << endl;
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...