class UnionFind:
def __init__(self, n):
self.root = list(range(n + 1))
def find(self, i):
if i == self.root[i]:
return i
self.root[i] = self.find(self.root[i])
return self.root[i]
def union(self, i, j):
self.root[self.find(j)] = self.find(i)
def connected(self, i, j):
return self.find(i) == self.find(j)
class Solution:
def findRedundantConnection(self, edges: List[List[int]]) -> List[int]:
uf = UnionFind(len(edges))
last = []
for start, end in edges:
if uf.connected(start, end) and start < end:
last = [start, end]
uf.union(start, end)
return last