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 {
};
}
};
【leetcode 并查集 C++】684. Redundant Connection
猜你喜欢
转载自blog.csdn.net/m0_37454852/article/details/113786256
今日推荐
周排行