#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 >> m >> k; vector edges(m); long long ans = 0; for(int i=0; i> edges[i].a >> edges[i].b >> edges[i].c; -- edges[i].a; -- edges[i].b; ans += edges[i].c; } UnionFindTree uft(n); for(int i=0; i> x; -- x; uft.unite(edges[x].a, edges[x].b); ans -= edges[x].c; } sort(edges.begin(), edges.end()); for(int i=0; i