#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define fi first
#define se second
#define pii pair<int, int>
const int MAX = 2e5 + 10;
int n, m;
int x, y;
vector <int> veze[MAX];
vector <int> v, v2;
int rek(int pos, int last) {
if (pos == y) {
v.push_back(pos);
return 1;
}
for (auto e : veze[pos]) {
if (e == last) continue;
if (rek(e, pos)) {
v.push_back(pos);
return 1;
}
}
return 0;
}
void input() {
cin >> n;
for (int i = 0; i <= n; i++) {
veze[i].clear();
}
for (int i = 0; i < n - 1; i++) {
cin >> x >> y;
veze[x].push_back(y);
veze[y].push_back(x);
}
v.clear(), v2.clear();
cin >> m;
for (int i = 0; i < m; i++) {
cin >> x >> y;
rek(x, -1);
reverse(v.begin(), v.end());
swap(v, v2);
}
}
void solve() {
input();
// cout << "v: "; for (auto e : v) cout << e << " "; cout << "\n";
// cout << "v2: "; for (auto e : v2) cout << e << " "; cout << "\n";
bool sol = false;
for (int i = 0; i < v.size(); i++) {
int mog = true;
for (int j = 0; j <= i; j++) if (v[j] == v2[0]) mog = false;
for (int j = 0; j < v2.size(); j++) if (v2[j] == v[i]) mog = false;
for (int j = i + 1; j < v.size(); j++) if (v[j] == v2.back()) mog = false;
if (mog) sol = true;
}
if (sol) cout << "Yes\n";
else cout << "No\n";
}
int main() {
// ios_base::sync_with_stdio(0);
// cin.tie(0);
int t;
cin >> t;
while (t--) {
solve();
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |