Submission #890820

#TimeUsernameProblemLanguageResultExecution timeMemory
890820vjudge1Jail (JOI22_jail)C++17
0 / 100
6 ms3164 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define ff first
#define ss second
#define all(a) a.begin(), a.end()
const int N = 120000;

vector<int> g[N+1];
int n;

/*
struct Fenwick{
	vector<int> fenw;
	int n;
	
	Fenwick(int sz){
		n = sz;
		fenw.resize(n+5, 0);
	};
	
	void add(int i, int x){
		for(; i <= n; i+= i & -i){
			fenw[i]+= x;
		}
	}
	int pref(int i){
		int s = 0;
		for(; i > 0; i-= i & -i){
			s+= fenw[i];
		}
		return s;
	}
	int sum(int l, int r){
		return pref(r) - pref(l-1);
	}
	
};

*/
void cl(){
	for(int i = 1;i <= n; i++) g[i].clear();
}






void solve(){
	 cin >> n;
	
	for(int i = 1;i < n; i++){
		int a, b; cin >> a >> b;
		g[a].push_back(b);
		g[b].push_back(a);
	}
	int q; cin >> q;
	vector< pair<int, int> > query(q);
	vector<array<int, 4> > p;
	for(int i = 0;i < q; i++){
		cin >> query[i].ff >> query[i].ss;
		if(query[i].ff > query[i].ss) swap(query[i].ff, query[i].ss);
		p.push_back({query[i].ff, query[i].ss, 0, i});
		p.push_back({query[i].ss, query[i].ff, 1, i});
	}
	sort(all(p), [&](auto A, auto B){
		if(A[0] == B[0]){
			if(A[1] == B[1]) return A[2] < B[2];
			return A[1] > B[1];
		}
		return A[0] < B[0];
	});
	
	multiset<int> st;
	for(auto [x, y, op, idx] : p){
		if(!op){
			
			if(st.empty() == false && *st.rbegin() >= query[idx].ss){
				cout << "No";
				return;
			}
			st.insert(query[idx].ss);
		}else{
			st.erase(st.find(x));
		}
	}
	
	cout << "Yes";
}


signed main(){
	ios::sync_with_stdio(0);
	cin.tie(0); cout.tie(0);
	int t; cin >> t;
	while(t--){
		solve();
		cl();
		cout << '\n';
	}
	
	return 0;
}
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...