Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #define fastio ios_base::sync_with_stdio(false); cin.tie(NULL);
- #define MAXN 1000001
- using namespace std;
- int n, m, parent[MAXN] = {}, lvl[MAXN] = {};
- int find(int u) {
- if (u == parent[u]) return u;
- return parent[u] = find(parent[u]);
- }
- void merge(int u, int v) {
- u = find(u);
- v = find(v);
- if (u == v) return;
- if (lvl[u] > lvl[u]) swap(u, v);
- parent[u] = v;
- if (lvl[u] == lvl[v]) lvl[v]++;
- }
- int main() {
- fastio;
- cin >> n >> m;
- for (int i = 1; i <= n; i++) { parent[i] = i; lvl[i] = 1; }
- for (int i = 0; i < m; i++) {
- int c, a, b;
- cin >> c >> a >> b;
- if (c == 0) merge(a, b);
- else {
- a = find(a);
- b = find(b);
- if (a == b) cout << "YES\n";
- else cout << "NO\n";
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement