Submission #892757

#TimeUsernameProblemLanguageResultExecution timeMemory
892757juliany2Jail (JOI22_jail)C++17
49 / 100
46 ms1136 KiB
#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 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...