제출 #1033125

#제출 시각아이디문제언어결과실행 시간메모리
1033125vjudge1Joker (BOI20_joker)C++17
14 / 100
427 ms5876 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define ll long long #define ar array #define ld long double const int N = 3e5 + 20; const int K = 200; const int INF = 1e15; const int LOG = 24; const int MOD = 998244353; struct DSU{ vector<int> p; vector<int> c; vector<int> sz; vector<int> bi; DSU(int n){ p.clear(); sz.clear(); bi.clear(); c.clear(); p.resize(n); sz.resize(n, 1); bi.resize(n, 1); c.resize(n, 0); for(int i = 0;i < n;i++)p[i] = i; } ar<int,2 > find(int x){ if(x == p[x])return {x, c[x]}; ar<int,2 > q = find(p[x]); return {q[0], q[1] ^ c[x]}; } vector<pair<int&, int> > rb; bool join(int a,int b){ ar<int, 2> pa = find(a); ar<int, 2> pb = find(b); a = pa[0]; b = pb[0]; int ca = pa[1]; int cb = pb[1]; rb.push_back({p[a], p[a]}); rb.push_back({sz[a], sz[a]}); rb.push_back({bi[a], bi[a]}); rb.push_back({c[a], c[a]}); rb.push_back({p[b], p[b]}); rb.push_back({sz[b], sz[b]}); rb.push_back({bi[b], bi[b]}); rb.push_back({c[b], c[b]}); if(a == b){ if(ca == cb)bi[a] = 0; return 0; } if(sz[a] < sz[b])swap(a, b), swap(ca, cb); sz[a] += sz[b]; p[b] = a; c[b] = cb ^ ca ^ 1; bi[a] &= bi[b]; return 1; } inline bool bip(int x){ return bi[find(x)[0]]; } void roll(){ for(int i = 0;i < 8;i++){ rb.back().first = rb.back().second; rb.pop_back(); } } }; signed main(){ios_base::sync_with_stdio(false);cin.tie(0); int n, m, q; cin>>n>>m>>q; ar<int, 2> e[m]; for(int i = 0;i < m;i++){ int u, v; cin>>u>>v; --u, --v; e[i] = {u, v}; } //assert(0); if(n <= 2000 && m <= 2000 && q <= 2000){ while(q--){ int l, r; cin>>l>>r; --l, --r; DSU d(n); bool ans = 1; for(int i = 0;i < m;i++){ if(l <= i && i <= r)continue; d.join(e[i][0], e[i][1]); if(!d.bip(e[i][0])){ ans = 0; break; } } cout<< (ans ? "NO\n" : "YES\n"); } 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...