【leetcode 并查集 C++】684. Redundant Connection

684. Redundant Connection

在这里插入图片描述

class Solution {
    
    
public:
    map<int, int> parent;
    void init(int N) {
    
    
        for(int ii = 0; ii <= N; ii++) parent[ii] = ii;
    }
    int find(int x) {
    
    
        if(parent[x] == x) return x;
        parent[x] = find(parent[x]);
        return parent[x];
    }
    bool is_connected(int x, int y) {
    
    
        return find(x) == find(y);
    }
    void join(int x, int y) {
    
    
        if(is_connected(x, y)) return ;
        parent[find(x)] = find(y);
    }
    vector<int> findRedundantConnection(vector<vector<int>>& edges) {
    
    
        init(edges.size());
        for(auto &edge : edges) {
    
    
            int x = edge[0];
            int y = edge[1];
            if(is_connected(x, y)) return edge;
            join(x, y);
        }
        return {
    
    };
    }
};

猜你喜欢

转载自blog.csdn.net/m0_37454852/article/details/113786256