5_hyun
2022. 7. 11. 22:19
반응형
해결법
문제를 보고서 이 문제는 경로 압축으로 루트 노드를 찾는 함수를 팀 합치기 연산으로 사용한다. 그리고 루트 노드가 같은지 판단하는 함수를 같은 팀 여부 확인으로 풀었다.
코드(한번에 맞음)
n, m = map(int, input().split())
def find_parent(parent, x):
if parent[x] != x:
find_parent(parent, parent[x])
return parent[x]
def union(parent, a, b):
a = find_parent(parent, a)
b = find_parent(parent, b)
if a < b:
parent[b] = a
else:
parent[a] = b
parent = [i for i in range(n+1)]
answer = []
for i in range(m):
a, b, c = map(int, input().split())
if a == 0:
union(parent, b, c)
else:
if find_parent(parent, b) == find_parent(parent, c):
answer.append("Yes")
else:
answer.append("NO")
for i in answer:
print(i)
앞에서 find_parent 함수와 union 함수가 여러 번 나와서 그런지 이 문제를 풀 때 바로 구현할 수 있었다.
반응형