要求:无向图多了一条边成环删边
思路:用并查集,一个连通分量根是父等于自己,合并只要合并父,如果一条边两个节点的父一样则再加上这条边就有环了
class Solution {
public:
vector<int> parent;
int find(int index){
if(parent[index]!=index)
return find(parent[index]);
return index;
}
void Union(int index1,int index2){
//把1合进2里
parent[find(index1)]=find(index2);
}
vector<int> findRedundantConnection(vector<vector<int>>& edges) {
parent.resize(edges.size()+1);
for(int i=1;i<=edges.size();++i)
parent[i]=i;
for(int i=0;i<edges.size();++i){
if(find(edges[i][0])==find(edges[i][1]))
return edges[i];
else{
Union(edges[i][0],edges[i][1]);
}
}
return {};
}
};