Submission #889733

#TimeUsernameProblemLanguageResultExecution timeMemory
889733vjudge1Tourism (JOI23_tourism)C++17
5 / 100
5018 ms5212 KiB


#include "bits/stdc++.h"

using namespace std;

#define pb push_back

#pragma GCC target("avx,avx2,fma")
#pragma GCC optimize("Ofast,unroll-loops")

const int N = 1e5 + 1;

vector<int> g[N];
int huy1[N],huy2[N];

signed main(){
    ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0);      

	int n,m,q;
	cin >> n >> m >> q;
	for(int i = 0;i < n - 1;i++){
		int a,b;
		cin >> a >> b;
		g[a].pb(b);
		g[b].pb(a);
	}	
	for(int i = 1;i <= m;i++){
		int a;
		cin >> a;
		huy1[i] = a;
		huy2[a] = i;
	}
	if(n <= 2000 && m <= 2000 && q <= 2000){
		while(q--){
			int l,r;
			cin >> l >> r;
			vector<int> dis(n + 1);
			queue<pair<int,int>> q;
			q.push({huy1[l],-1});
			vector<int> pr(n + 1);
			while(!q.empty()){
				auto [v,p] = q.front();q.pop();
				for(auto u : g[v]){
					if(u != p){
						dis[u] = dis[v] + 1;
						pr[u] = v;
						q.push({u,v});
					}
				}
			}
			vector<int> huy3(n + 1);
			for(int i = l + 1;i <= r;i++){
				int huy4 = huy1[i];
				while(huy4 != huy1[l]){
					huy3[huy4] = 1;
					 	huy4 = pr[huy4];
				}
			}
			int cnt = 0;
			for(int i = 1;i <= n;i++){
				cnt += huy3[i];
			}
			cout << cnt + 1 << "\n";
		}
	}
    
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...