Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- vector < int > p, r;
- inline int get(int a) {
- return p[a] = (p[a] == a ? a : get(p[a]));
- }
- void Union(int u, int v) {
- int a = get(u);
- int b = get(v);
- if(r[a] == r[b])
- ++r[a];
- if(r[a] > r[b])
- p[b] = a;
- else
- p[a] = b;
- }
- int main() {
- ios_base::sync_with_stdio(false);
- cin.tie(nullptr);
- cout.tie(nullptr);
- int N, Q;
- cin >> N >> Q;
- p.resize(N), r.resize(N);
- for(int i = 0; i < N; ++i) {
- p[i] = i;
- r[i] = 1;
- }
- while(Q--) {
- string type;
- int u, v;
- cin >> type >> u >> v;
- --u, --v;
- if(type == "union")
- Union(u, v);
- else {
- int a = get(u);
- int b = get(v);
- if(a == b)
- cout << "YES\n";
- else
- cout << "NO\n";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment