#include <bits/stdc++.h>
using namespace std;
const int MN = 120005;
const int MQ = 120005;
vector<int> mergeIdx(MN);
int n, q;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n >> q;
for (int i = 1; i <= n; i++) mergeIdx[i] = -1;
int merges = 0;
for (int qq = 1; qq <= n + q - 1; qq++) {
char s; cin >> s;
if (s == 'S') {
int a, b; cin >> a >> b;
if (a == 1) swap(a, b);
merges++;
mergeIdx[a] = merges;
}
else if (s == 'Q') {
int a, b; cin >> a >> b;
if (a == b) {
cout << "yes\n";
continue;
}
if (a == 1 || b == 1) {
if ((a == 1 && mergeIdx[b] != -1) || (b == 1 && mergeIdx[a] != -1)) cout << "yes\n";
else cout << "no\n";
continue;
}
if (mergeIdx[b] < mergeIdx[a] && mergeIdx[a] != -1 && mergeIdx[b] != -1) {
cout << "yes\n";
}
else cout << "no\n";
}
else if (s == 'C') {
int u; cin >> u;
if (u == 1) {
cout << merges + 1 << "\n";
continue;
}
if (mergeIdx[u] == -1) cout << 0 << "\n";
else {
cout << merges - mergeIdx[u] + 2 << "\n";
}
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |