Submission #642407

#TimeUsernameProblemLanguageResultExecution timeMemory
642407berrJoker (BOI20_joker)C++17
0 / 100
8 ms16724 KiB
#include <bits/stdc++.h> using namespace std; #define int long long int n, m, q, flag; vector<array<int, 2>> adj[(int)3e5], check((int)3e5); vector<int> val((int)3e5, 1e18), vis((int)(3e5), -1); void dfs(int p, int x, int y, int z, int par) { vis[p]=z%2; if(y<x) swap(x, y); for(auto i: adj[p]) { if(i[1]>=x&&i[1]<=y) continue; if(i[0]==par) continue; if(vis[i[0]]==-1) dfs(i[0], x, y, z+1, p); else if(vis[i[0]]!=-1&&(z+vis[i[0]]+1)%2==1) flag=1; } } int bs(int pos) { int s=pos; for(int i=20; i>=0; i--) { if(s+(1<<i)<=m) { int tmp=(s+(1<<i)); for(int i=1; i<=n; i++) vis[i]=-1; flag=0; for(int i=1; i<=n; i++) if(vis[i]==-1) dfs(i, pos, tmp, 0, i); if(flag==1) s=tmp; } } return s; } int32_t main() { ios_base::sync_with_stdio(false); cin.tie(0); cin>>n>>m>>q; for(int i=1; i<=m; i++) { int x, y; cin>>x>>y; adj[x].push_back({y, i}); adj[y].push_back({x, i}); } if(n<=2000&&m<=2000&&q<=2000) { while(q--) { int l, r; cin>>l>>r; int h=bs(l); if(h<r) cout<<"NO\n"; else cout<<"YES\n"; } } else { for(int i=1; i<=200; i++) { val[i]=bs(i); } while(q--) { int l, r; cin>>l>>r; if(r>val[l]) cout<<"NO\n"; else cout<<"YES\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...