코딩테스트 문제풀이/beakjoon
[핵심유형] 여행계획
merona99
2022. 7. 9. 16:16
반응형
여행계획
그래프 / 서로소 집합
[문제]
간선 정보가 나와있고 집합과의 관계를 파악하기 위하여 서로소 집합 알고리즘을 사용해야 함
[과정]
- 서로소 집합 수행
- i번째 부모와 i+1번째 부모를 순차적으로 돌면서 같은지 확인
[소스코드]
# 여행계획
def find_parent(parent, x):
if parent[x] != x:
return find_parent(parent, parent[x])
return x
def union_parent(parent, a, b):
a = find_parent(parent, a)
b = find_parent(parent, b)
if a < b:
parent[b] = a
else:
parent[a] = b
n,m = map(int, input().split())
parent = [0] * (n + 1)
for i in range(1, n+1):
parent[i] = i
for i in range(n):
data = list (map(int, input().split()))
for j in range(n):
if data[j] == 1:
union_parent(parent, i+1, j+1)
arr = list(map(int, input().split()))
result = True
for i in range(m-1):
if find_parent(parent, arr[i]) != find_parent(parent, arr[i+1]):
result = False
if result:
print('YES')
else:
print('NO')
[통과]
반응형