Submission #1194217

#TimeUsernameProblemLanguageResultExecution timeMemory
1194217zyntherixExperimental Charges (NOI19_charges)C++20
32 / 100
26 ms3656 KiB
#include <bits/stdc++.h> using namespace std; #define int long long #define pi pair<int, int> #define vi vector<int> #define vs vector<string> #define vb vector<bool> #define vpi vector<pi> #define pb push_back #define all(a) (a).begin(), (a).end() const int mod = 1e9 + 7; const int N = 2e5 + 5; const int N2 = 1e5 + 2; int par[N]; int siz[N]; void make(int x) { par[x] = x; siz[x] = 1; } int find(int x) { if (x == par[x]) { return x; } return par[x] = find(par[x]); } void join(int a, int b) { a = find(a); b = find(b); if (a != b) { if (siz[a] < siz[b]) { swap(a, b); } par[b] = a; siz[a] += siz[b]; } } signed main() { ios_base::sync_with_stdio(0); cin.tie(NULL); cout.tie(NULL); int n, q; cin >> n >> q; for (int i = 1; i <= n; i++) { make(i); make(N2 + i); } while (q--) { char c; int a, b; cin >> c >> a >> b; if (c == 'R') { join(a, b); join(N2 + a, N2 + b); } else if (c == 'A') { join(a, N2 + b); join(b, N2 + a); } else { int x = find(a); int y = find(b); if (x == y) { cout << "R\n"; } else if (find(N2 + y) == x || find(N2 + x) == y) { cout << "A\n"; } else { cout << "?\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...