1. class Solution {
    2. public:
    3. int minimumCost(int n, vector<vector<int>>& e) {
    4. sort(e.begin(), e.end(), [&](vector<int>& lth, vector<int>& rth) {
    5. return lth[2] < rth[2];
    6. });
    7. vector<int> f(n + 1);
    8. iota(f.begin(), f.end(), 0);
    9. function<int(int)> get = [&](int x) { return x == f[x] ? x : f[x] = get(f[x]); };
    10. int res = 0, cnt = 0;
    11. for(int i = 0; i < e.size(); i++) {
    12. int x = get(e[i][0]), y = get(e[i][1]);
    13. if(x == y) continue;
    14. f[x] = y;
    15. res += e[i][2];
    16. cnt ++;
    17. }
    18. return cnt == n - 1 ? res : -1;
    19. }
    20. };