#include #include "UnionFind.h" #define NUM_NODES 9 void print_components(UnionFind& uf) { int comp, node; int comps[NUM_NODES + 1][NUM_NODES + 2]; for (comp = 1; comp <= NUM_NODES; comp++) comps[comp][0] = 0; for (node = 1; node <= NUM_NODES; node++) { comp = uf.find(node); comps[comp][++comps[comp][0]] = node; } for (comp = 1; comp <= NUM_NODES; comp++) { if (comps[comp][0] == 0) continue; cout << "Component " << comp << ": "; for (node = 1; node <= comps[comp][0]; node++) cout << comps[comp][node] << " "; cout << '\n'; } } int main(void) { int set1, set2; UnionFind uf(NUM_NODES + 1); while (cin >> set1 >> set2) { cout << "Inserting " << set1 << " , " << set2 << '\n'; uf.setUnion(set1, set2); print_components(uf); cout << endl; } return 0; }