제출 #706545

#제출 시각아이디문제언어결과실행 시간메모리
706545pccJail (JOI22_jail)C++14
21 / 100
5066 ms13464 KiB
#include <bits/stdc++.h> using namespace std; const int mxn =2e5+10; int pre[mxn]; vector<int> tree[mxn]; vector<int> dir[mxn]; bitset<255> used; int m; int n; void dfs(int now,int par){ pre[now] = par; for(auto nxt:tree[now]){ if(nxt == par)continue; dfs(nxt,now); } return; } bool f(int arr[]){ bitset<255> tmp; for(int i = 1;i<=n;i++)tmp[i] = used[i]; bool flag = true; // for(int i = 0;i<m;i++)cout<<arr[i]<<',';cout<<endl; for(int i = 0;i<m;i++){ int now = arr[i]; for(auto &j:dir[now])if(j != dir[now].back()&&tmp[j])flag = false; tmp[dir[now].back()] = false; tmp[dir[now][0]] = true; // for(int j = 1;j<=n;j++)cout<<tmp[j];cout<<endl; } if(flag)return true; else return false; } void solve1(){ pair<int,int> arr[m]; for(auto &i:arr)cin>>i.first>>i.second; sort(arr,arr+m); int maxR = 0,minL = 0; bool flag = true; for(auto &i:arr){ if(i.first>i.second){ if(minL>i.second)flag = false; if(maxR>i.second)flag = false; minL = max(minL,i.second); } else{ if(maxR>i.second)flag = false; maxR = max(maxR,i.second); } } if(flag)cout<<"Yes\n"; else cout<<"No\n"; return; } void solve(){ cin>>n; for(int i = 0;i<n-1;i++){ int a,b; cin>>a>>b; tree[a].push_back(b); tree[b].push_back(a); } cin>>m; if(m>6||n>250){ solve1(); return; } for(int i = 0;i<m;i++){ int s,e; cin>>s>>e; used[s] = true; dfs(s,s); int tmp = e; dir[i].push_back(e); while(tmp != s){ dir[i].push_back(tmp=pre[tmp]); } // for(int j = 1;j<=n;j++)cout<<pre[j]<<',';cout<<endl; // for(auto &j:dir[i])cout<<j<<',';cout<<endl; } int choice[m]; for(int i = 0;i<m;i++)choice[i] = i; bool flag = false; if(f(choice))flag = true; while(next_permutation(choice,choice+m))if(f(choice))flag = true; if(flag)cout<<"Yes\n"; else cout<<"No\n"; for(int i = 0;i<=n;i++){ tree[i].clear(); } for(int i =0;i<m;i++)dir[i].clear(); used.reset(); return; } int main(){ ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); int t; cin>>t; while(t--)solve(); }
#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...