#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; // Union-Find木 class UnionFindTree { int n; vector parent; // 親ノード vector rank; // 木の高さの上限 vector num; // グループの要素数 int find(int x){ if(parent[x] == x) return x; return parent[x] = find(parent[x]); } public: UnionFindTree(int n0){ // コンストラクタ n = n0; parent.resize(n); for(int i=0; i> n; vector x(n), y(n); for(int i=0; i> x[i] >> y[i]; vector > dist(n, vector(n)); UnionFindTree uft(n); for(int i=0; i