Submission #765253

#TimeUsernameProblemLanguageResultExecution timeMemory
765253oyberJoker (BOI20_joker)C++14
0 / 100
58 ms3644 KiB
#include <cstdio> #include <vector> #include <algorithm> #include <functional> using namespace std; vector<int> u; vector<int> s; vector<int> p; int find(int n) { if (u[n] == n) return n; return find(u[n]); } int parity(int n) { if (u[n] == n) return 0; return parity(u[n])^p[n]; } void unite(int a, int b) { int ap = find(a); int bp = find(b); if (s[bp] > s[ap]) { swap(a, b); swap(ap, bp); } u[bp] = ap; s[ap] += s[bp]; if (parity(a) == parity(b)) { p[bp] = 1; } } int main() { int n, m, qn; scanf("%d %d %d", &n, &m, &qn); u.resize(n); s.resize(n, 1); p.resize(n); for (int i = 0; i < n; i++) { u[i] = i; } vector<pair<int, int>> e(m); for (int i = 0; i < m; i++) { int a, b; scanf("%d %d", &a, &b); a--;b--; e[i] = make_pair(a, b); //printf("%d %d %d\n", a, b, i); } int cycle = -1; for (int j = m-1; j >= 0; j--) { int a = e[j].first; int b = e[j].second; //printf("%d: (%d %d) (%d %d) (%d %d)\n", j, a, b, find(a), find(b), parity(a), parity(b)); if (find(a) == find(b)) { if (parity(a) == parity(b)) { cycle = j; break; } } else { unite(a, b); } } //printf("%d\n", cycle); for (int i = 0; i < qn; i++) { int l, r; scanf("%d %d", &l, &r); l--;r--; if (r <= cycle) { printf("YES\n"); } else { printf("NO\n"); } } }

Compilation message (stderr)

Joker.cpp: In function 'int main()':
Joker.cpp:37:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   37 |     scanf("%d %d %d", &n, &m, &qn);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
Joker.cpp:50:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   50 |         scanf("%d %d", &a, &b);
      |         ~~~~~^~~~~~~~~~~~~~~~~
Joker.cpp:73:14: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   73 |         scanf("%d %d", &l, &r);
      |         ~~~~~^~~~~~~~~~~~~~~~~
#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...