Submission #936009

#TimeUsernameProblemLanguageResultExecution timeMemory
936009MinaRagy06Joker (BOI20_joker)C++17
14 / 100
2047 ms6776 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long const int N = 200'005; int par[N], sz[N], dep[N]; bool gud; array<int, 2> find(int u) { if (par[u] == u) { return {u, 0}; } array<int, 2> v = find(par[u]); v[1] ^= dep[u]; return v; } void join(int u, int v) { array<int, 2> pu = find(u), pv = find(v); if (pu[0] == pv[0]) { gud &= dep[pv[0]] == (pv[1] ^ pu[1] ^ 1); return; } if (sz[pu[0]] < sz[pv[0]]) { swap(u, v); swap(pu, pv); } par[pv[0]] = pu[0]; dep[pv[0]] = (pv[1] ^ pu[1] ^ 1); sz[pu[0]] += sz[pv[0]]; } int main() { ios_base::sync_with_stdio(0), cin.tie(0); int n, m, q; cin >> n >> m >> q; array<int, 2> e[m]; for (int i = 0; i < m; i++) { cin >> e[i][0] >> e[i][1]; } while (q--) { int l, r; cin >> l >> r; l--, r--; for (int i = 1; i <= n; i++) { par[i] = i; sz[i] = 1; dep[i] = 0; } gud = 1; for (int i = 0; i < l; i++) { join(e[i][0], e[i][1]); } for (int i = r + 1; i < m; i++) { join(e[i][0], e[i][1]); } if (gud) { cout << "NO\n"; } else { cout << "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...