Submission #930587

#TimeUsernameProblemLanguageResultExecution timeMemory
930587UmairAhmadMirzaJoker (BOI20_joker)C++17
25 / 100
429 ms22976 KiB
#include <bits/stdc++.h> using namespace std; int const N=2e5+5; vector<int> adj[N]; bool dep[N]; int rep[N]; vector<int> com[N]; // int dp[N][N]; bool merge(int a,int b){ int ra=a; int rb=b; a=rep[a]; b=rep[b]; // cout<<ra<<' '<<rb<<endl; if(a==b){ if(dep[ra]==dep[rb]) return 0; return 1; } if(com[a].size()>com[b].size()){ swap(a,b); swap(ra,rb); } bool sw=0; if(dep[ra]==dep[rb]) sw=1; for(auto i:com[a]){ com[b].push_back(i); rep[i]=b; dep[i]^=sw; } com[a].clear(); return 1; } int main() { int n,m,q; cin>>n>>m>>q; for(int i=1;i<=n;i++){ com[i].push_back(i); rep[i]=i; } vector<pair<int,int>> edge; for(int i=0;i<m;i++){ int a,b; cin>>a>>b; if(a>b) swap(a,b); edge.push_back({a,b}); } int k=m; reverse(edge.begin(),edge.end()); for(auto e:edge){ k--; // cout<<"Include := "<<node<<endl; if(merge(e.first,e.second)==0) break; } // cout<<k<<endl; // cout<<k<<endl; for(int i=0;i<q;i++){ int l,r; cin>>l>>r; if(r<=k) cout<<"YES"<<endl; else cout<<"NO"<<endl; } 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...