| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 | type unionFind struct {	id []int	sz []int}func newUF(k int) (uf unionFind) {	uf.id = make([]int, k+1)	uf.sz = make([]int, k+1)	for i := range uf.id {		uf.id[i] = i	}	return}func (uf unionFind) union(x, y int) bool {	x, y = uf.find(x), uf.find(y)	if x == y {		return false	}	if uf.sz[x] < uf.sz[y] {		uf.id[x] = y	} else {		uf.id[y] = x		if uf.sz[x] == uf.sz[y] {			uf.sz[x]++		}	}	return true}func (uf unionFind) find(x int) int {	if uf.id[x] == x {		return x	}	i := uf.find(uf.id[x])	uf.id[x] = i	return i}func findRedundantConnection(edges [][]int) []int {	n := len(edges)	uf := newUF(n)	for _, edge := range edges {		if !uf.union(edge[0], edge[1]) {			return edge		}	}	return []int{}}
 |