#include <bits/stdc++.h> using namespace std; struct Union { unordered_map<int, int> parent; unordered_map<int, int> rank; int find(int x) { if (!parent.count(x)) parent[x] = x; if (parent[x] != x) parent[x] = find(parent[x]); return parent[x]; } void unite(int x, int y) { int root...