Java
import java.util.Arrays;
/**
* <a href="https://leetcode.cn/problems/redundant-connection/">Redundant Connection</a>
* 深度优先搜索;广度优先搜索;并查集;图
*/
class Solution {
public int[] findRedundantConnection(int[][] edges) {
int[] parent = new int[edges.length + 1];
for (int i = 1; i <= edges.length; i++) {
parent[i] = i;
}
for (int[] edge : edges) {
int a = edge[0], b = edge[1];
if (find(parent, a) == find(parent, b)) {
return edge;
} else {
union(parent, a, b);
}
}
return null;
}
public int find(int[] parent, int x) {
if (parent[x] != x) {
parent[x] = find(parent, parent[x]);
}
return parent[x];
}
public void union(int[] parent, int x, int y) {
parent[find(parent, x)] = find(parent, y);
}
}