코딩테스트 문제풀이/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')

 

 


 

[통과]

 

반응형