제출 #935991

#제출 시각아이디문제언어결과실행 시간메모리
935991TAhmed33Jail (JOI22_jail)C++98
49 / 100
5094 ms1048576 KiB
#include <bits/stdc++.h>
using namespace std;
const int MAXN = 120025;
int n, m;
pair <int, int> a[MAXN];
vector <int> adj[MAXN];
set <int> path[MAXN];
vector <int> comp;
bool flag;
void dfs (int pos, int par, int c) {
	comp.push_back(pos);
	if (pos == a[c].second) {
		flag = 1;
		return;
	}
	for (auto j : adj[pos]) {
		if (j == par) continue;
		dfs(j, pos, c);
		if (flag) return;
	}
	comp.pop_back();
}
int vis[MAXN];
void dfs2 (int pos) {
	vis[pos] = 1;
	comp.push_back(pos);
	for (int i = 1; i <= m; i++) {
		if (i == pos) continue;
		if (path[pos].count(a[i].first)) {
			if (vis[i] == 1) {
				flag = 1;
				return;
			}
			if (vis[i] == 0) {
				dfs2(i);
				if (flag) return;
			}
		}
	}
	for (int i = 1; i <= m; i++) {
		if (i == pos) continue;
		if (path[i].count(a[pos].second)) {
			if (vis[i] == 1) {
				flag = 1;
				return;
			}
			if (vis[i] == 0) {
				dfs2(i);
				if (flag) return;
			}
		}
	}
	if (flag) return;
	vis[pos] = 2;
	comp.pop_back();
}
void solve () {
	cin >> n;
	for (int i = 1; i <= n; i++) adj[i].clear();
	for (int i = 1; i < n; i++) {
		int x, y;
		cin >> x >> y;
		adj[x].push_back(y);
		adj[y].push_back(x);
	}
	cin >> m;
	for (int i = 1; i <= m; i++) {
		cin >> a[i].first >> a[i].second; vis[i] = 0;
		path[i].clear(); comp.clear(); flag = 0;
		dfs(a[i].first, -1, i);
		for (auto j : comp) path[i].insert(j);
	}
	flag = 0;
	comp.clear();
	for (int i = 1; i <= n && !flag; i++) {
		if (vis[i] == 0) {
			dfs2(i);
		}
	}
	cout << (flag ? "No\n" : "Yes\n");
}
int main () {
	ios::sync_with_stdio(0); cin.tie(0);
	int t = 1; cin >> t;
	while (t--) solve();
}
#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...