각 부모 노드는 자기 자신을 자식 노드로 삼고 있다.
이 때 (1-4) (2-4) 노드가 연결된다고 가정하자.
작은 원소가 부모 노드라는 규칙이다.
그러면 4번 노드의 부모 노드는 1번 노드가 된다.
마찬가지로 2번 노드와 4번 노드도 연결되는데
이 때 이미 4번 노드가 1번 노드와 연결되어있음을 주의하라
작은 원소가 부모 노드라는 규칙에 의거해 재귀적으로 2번 노드의 부모 노드도
1번 노드가 된다.
{1,2,4} {3}
따라서 위와 같은 집합들이 생성된다.
# Union-Find Example Code
# Find real parent node
def find(x):
if x == parent[x]:
return x
else:
p = find(parent[x])
parent[x] = p
return parent[x]
# Link y --> x
def union(x,y):
x = find(x)
y = find(y)
parent[y] = x
# Link 1-4 , 2-4
parent = []
# [0,1,2,3,4]
for i in range(5):
parent.append(i)
union(1,4)
union(4,2)
for i in range(1,len(parent)):
print(find(i),end=" ")
list = [(1,4),(2,5),(19,3),(5,7)]
max(list, key=lambda x:x[0])
max(list, key=lambda x:x[1])
출력:
(19,3)
(5,7)