제출 #837996

#제출 시각아이디문제언어결과실행 시간메모리
8379961075508020060209tcJoker (BOI20_joker)C++14
25 / 100
67 ms8472 KiB
#pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx,popcnt,sse4,abm") #include <bits/stdc++.h> using namespace std; int n;int m;int Q; int ar[400005]; int br[400005]; int uf[200005]; int isbip; int sz[200005]; int ufv[200005]; stack<int>stk; stack<int>stkv; stack<int>stkbp; int finv(int x){ if(uf[x]==x){return 0;} return (ufv[x]+finv(uf[x]))&1; } int fin(int x){ if(uf[x]==x){return x;} int v=(ufv[x]+finv(uf[x]))&1; ufv[x]=v; uf[x]=fin(uf[x]); return uf[x]; } void mrg(int a,int b){ int pa=fin(a);int pb=fin(b); if(pa==pb){ // stk.push(0);stkbp.push(isbip); if(finv(a)==finv(b)){ isbip=0; } return; } //stkbp.push(isbip); if(sz[pa]<sz[pb]){swap(pa,pb);swap(a,b);} int va=finv(a);int vb=finv(b); if(va==vb){ // stkv.push(1); ufv[pb]=1; uf[pb]=pa; sz[pa]+=sz[pb]; }else{ //stkv.push(0); ufv[pb]=0; uf[pb]=pa; sz[pa]+=sz[pb]; } //stk.push(pb); } void rollback(){ int pb=stk.top(); if(pb==0){ stk.pop();//stkv.pop(); isbip=stkbp.top(); stkbp.pop(); return; } isbip=stkbp.top(); stk.pop();stkbp.pop(); int pa=uf[pb]; sz[pa]-=sz[pb]; uf[pb]=pb; ufv[pb]=0; } int lar[200005];int rar[200005];int lpl[200005]; void precalc(){ for(int i=1;i<=n;i++){ uf[i]=i; ufv[i]=0; sz[i]=1; } while(stk.size()){stk.pop();} while(stkbp.size()){stkbp.pop();} } int all; void dolid(int lid){ precalc(); isbip=1; lpl[lid]=0; for(int i=m+lid-1;i>=lid-1;i--){ mrg(ar[i],br[i]); if(!isbip){ lpl[lid]=i;break; } } if(lid==0&&lpl[lid]==0){ all=1; } } signed main(){ cin.tie(0); ios_base::sync_with_stdio(0); cin>>n>>m>>Q; for(int i=1;i<=m;i++){ cin>>ar[i]>>br[i]; ar[i+m]=ar[i]; br[i+m]=br[i]; } set<int>st; for(int i=1;i<=Q;i++){ cin>>lar[i]>>rar[i]; st.insert(lar[i]); } dolid(0); if(!all){ for(auto it=st.begin();it!=st.end();it++){ int v=*it; dolid(v); }} for(int i=1;i<=Q;i++){ if(rar[i]<lpl[lar[i]]){ cout<<"YES\n"; }else{ cout<<"NO\n"; } } }
#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...