Submission #1033874

#TimeUsernameProblemLanguageResultExecution timeMemory
1033874goodspeed0208Joker (BOI20_joker)C++14
0 / 100
2066 ms6100 KiB
#include<bits/stdc++.h> #define pii pair<int, int> using namespace std; int n, m, q; vector<int>f, sz, same, dif; void init() { for (int i = 0 ; i < n ; i++) { f[i] = i; same[i] = i; dif[i] = -1; sz[i] = 1; } } int find(int x) { //if (f[x][j] == -1) return -1; if (x == f[x]) return x; else return f[x] = find(f[x]); } int finds(int x) { if (x == same[x]) return x; else return same[x] = find(same[x]); } bool add(int a, int b) { int fa = find(a), fb = find(b); int sa = finds(a), sb = finds(b); //cout << fa << " " << sa << " " << fb << " " << sb << "\n"; if (fa == fb) { if (sa == sb) return true; } if (sz[fa] > sz[fb]) swap(fa, fb); swap(sa, sb); f[fa] = fb; sz[fb] += sz[fa]; if ((fa == sa && fb == sb) || (fa != sa && fb != sb)) { if (dif[fa] != -1) same[dif[fa]] = same[fb]; if (dif[fb] != -1) same[fa] = same[dif[fb]]; else dif[fb] = fa; } else { same[fa] = same[fb]; if (dif[fa] != -1 && dif[fb] != -1) same[dif[fa]] = same[dif[fb]]; else if (dif[fa] != -1) dif[fb] = fa; } return false; } signed main() { ios::sync_with_stdio(false); cin.tie(0); cin >> n >> m >> q; f.resize(n); sz.resize(n, 1); same.resize(n); dif.resize(n); vector<pii>e; int a, b; for (int i = 0 ; i < m ; i++) { cin >> a >> b; a--, b--; e.push_back({a, b}); } int l, r; for (int i = 0 ; i < q ; i++) { init(); bool can = 0; cin >> l>> r; l--, r--; for (int j = 0 ; j < l && !can ; j++) { //cout << e[j].first << " " << e[j].second << "\n"; can = add(e[j].first, e[j].second); //cout << j << " "; } for (int j = r+1 ; j < m && !can ; j++) { can = add(e[j].first, e[j].second); //cout << j << " "; } if (can) cout <<"YES\n"; else cout << "NO\n"; } }

Compilation message (stderr)

Joker.cpp: In function 'bool add(int, int)':
Joker.cpp:35:2: warning: this 'if' clause does not guard... [-Wmisleading-indentation]
   35 |  if (sz[fa] > sz[fb]) swap(fa, fb); swap(sa, sb);
      |  ^~
Joker.cpp:35:37: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'if'
   35 |  if (sz[fa] > sz[fb]) swap(fa, fb); swap(sa, sb);
      |                                     ^~~~
#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...