Submission #1204554

#TimeUsernameProblemLanguageResultExecution timeMemory
1204554UnforgettableplJoker (BOI20_joker)C++20
25 / 100
220 ms20252 KiB
#pragma GCC optimize("Ofast","unroll-loops") #include <bits/stdc++.h> using namespace std; #define int long long int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); int N,M,Q; cin >> N >> M >> Q; vector<vector<pair<int,int>>> adj(N+1); for(int i=1;i<=M;i++){ int u,v; cin >> u >> v; adj[u].emplace_back(v,i); adj[v].emplace_back(u,i); } auto solve = [&](int l,int r){ vector<int> depth(N+1,-1); bool works = false; auto dfs = [&](auto&& self,int x,int dep)->void{ depth[x]=dep; for(auto&[i,idx]:adj[x]){ if(l<=idx and idx<=r)continue; if(depth[i]==-1){ self(self,i,dep+1); } else { if((dep-depth[i])%2==0)works=true; } } }; for(int i=1;i<=N;i++)if(depth[i]==-1)dfs(dfs,i,1); return works; }; vector<int> optR(M+1); const int MAXL = 1; for(int i=1;i<=min(MAXL,M);i++){ optR[i]=max(optR[i-1],i-1); for(int jump=(1<<17);jump;jump/=2){ if(optR[i]+jump>M)continue; if(solve(i,optR[i]+jump))optR[i]+=jump; } } for(int i=1;i<=Q;i++){ int l,r;cin>>l>>r; if(r<=optR[l])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...