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...