This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
using ll = long long;
#define all(x) (x).begin(), (x).end()
const int N = 257;
int n, m;
vector<int> adj[N], g[N];
int s[N], t[N];
int vis[N];
bool ok;
void dfs(int v, int p, int t) {
if (v == t)
vis[v] = 1;
for (int u : adj[v]) {
if (u != p) {
dfs(u, v, t);
if (vis[u])
vis[v] = 1;
}
}
}
void go(int v) {
vis[v] = 1;
for (int u : g[v]) {
if (!vis[u])
go(u);
else if (vis[u] == 1)
ok = 0;
}
vis[v] = 2;
}
void solve() {
cin >> n;
for (int i = 1; i <= n; i++) {
adj[i].clear();
g[i].clear();
}
for (int i = 1; i < n; i++) {
int u, v;
cin >> u >> v;
adj[u].push_back(v);
adj[v].push_back(u);
}
cin >> m;
for (int i = 1; i <= m; i++)
cin >> s[i] >> t[i];
for (int i = 1; i <= m; i++) {
memset(vis, 0, sizeof(vis));
dfs(s[i], 0, t[i]);
for (int j = 1; j <= m; j++) {
if (i == j)
continue;
if (vis[s[j]])
g[j].push_back(i);
if (vis[t[j]])
g[i].push_back(j);
}
}
memset(vis, 0, sizeof(vis));
ok = 1;
for (int i = 1; i <= m; i++)
if (!vis[i])
go(i);
cout << (ok ? "Yes" : "No") << '\n';
}
int main() {
cin.tie(0)->sync_with_stdio(false);
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... |