并查集
class Solution {
void unite(int x, int y, int[] f) {
f[find(f[x],f)] = find(f[y], f);
}
int find(int x, int[] f) {
if (x == f[x]) return f[x];
return f[x] = find(f[x], f);
}
public int[] findRedundantConnection(int[][] edges) {
int[] f = new int[edges.length + 1];
for (int i = 1; i < f.length; i++) f[i] = i;
for (int[] a : edges) {
System.out.println(find(a[0], f)+" "+find(a[1], f));
if (find(a[0], f) == find(a[1], f)) return new int[]{a[0], a[1]};
else{
unite(a[0],a[1],f);
}
}
return new int[]{0,0};
}
}