Submission #423144
Source Code Expand
#include <iostream> #include <string> #include <algorithm> #include <iomanip> #include <vector> using namespace std; struct UnionFind { int data[200001]; UnionFind(int size); bool unionSet(int x, int y) { x = root(x); y = root(y); if (x != y) { if (data[y] < data[x]) swap(x, y); data[x] += data[y]; data[y] = x; } return x != y; } bool findSet(int x, int y) { return root(x) == root(y); } int root(int x) { return data[x] < 0 ? x : data[x] = root(data[x]); } int size(int x) { return -data[root(x)]; } }; int main() { int N, Q; int P, A, B; UnionFind uf(N); cin >> N >> Q; for (int i = 0; i < Q; ++i) { cin >> P >> A >> B; if (P == 0) { uf.unionSet(A, B); } if (P == 1) { if (uf.findSet(A, B)) { cout << "Yes" << endl; }else { cout << "No" << endl; } } } return 0; }
Submission Info
Submission Time | |
---|---|
Task | B - Union Find |
User | otomarukanta |
Language | C++ (GCC 4.9.2) |
Score | 0 |
Code Size | 959 Byte |
Status | CE |
Compile Error
/tmp/cc2P7c8m.o: In function `main': Main.cpp:(.text.startup+0x1b): undefined reference to `UnionFind::UnionFind(int)' collect2: error: ld returned 1 exit status