#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; class UnionFindTree { private: int n; int groupNum; // グループの数 vector parent; // 親ノード vector rank; // 木の高さの上限 vector num; // グループの要素数 int find(int i){ if(parent[i] == i) return i; else return parent[i] = find(parent[i]); } public: UnionFindTree(int n){ // コンストラクタ this->n = n; groupNum = n; parent.resize(n); for(int i=0; i> n; vector c(n), d(n); for(int i=0; i> c[i] >> d[i]; vector > v; for(int i=0; i