Submission #1244208

#TimeUsernameProblemLanguageResultExecution timeMemory
1244208ereringJail (JOI22_jail)C++20
5 / 100
7 ms4936 KiB
#include <bits/stdc++.h>
#define pb push_back
#define int long long
#define endl '\n'
using namespace std;
const int N=2e5+5,inf=2e8,MOD=1e9+9;
vector<int> adj[N],vec;
bool vis[N];
bool dfs(int node,int goal){
    if(node==goal){
        vec.pb(node);
        return 1;
    }
    vis[node]=1;
    for(auto i:adj[node]){
        if(!vis[i]){
            bool flag=dfs(i,goal);
            if(flag){
                vec.pb(i);
                return 1;
            }
        }
    }
    return 0;
}
signed main(){
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
    int t; cin>>t;
    while(t--){
        int n; cin>>n;
        vec.clear();
        for(int i=1;i<=n;i++){
            adj[i].clear();
            vis[i]=0;
        }
        for(int i=0;i<n-1;i++){
            int x,y; cin>>x>>y;
            adj[x].pb(y);
            adj[y].pb(x);
        }
        int m; cin>>m;
        pair<int,int> p[m];
        for(int i=0;i<m;i++){
            cin>>p[i].first>>p[i].second;
        }
        vec.pb(p[0].first);
        dfs(p[0].first,p[0].second);
        for(int i=1;i<=n;i++)vis[i]=0;
        vector<int> vec2=vec;
        vec.clear();
        vec.pb(p[1].first);
        dfs(p[1].first,p[1].second);
        bool flag1=1,flag2=1;
        for(auto i:vec){
            if(i==p[0].first)flag1=0;
        }
        for(auto i:vec2){
            if(i==p[1].second)flag1=0;
        }
        swap(vec,vec2);
        for(auto i:vec){
            if(i==p[1].first)flag2=0;
        }
        for(auto i:vec2){
            if(i==p[0].second)flag2=0;
        }
        cout<<(flag1 || flag2?"Yes":"No")<<endl;
    }
}
#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...