[백준] 2644 : 촌수계산

이상훈·2023년 10월 25일
0

알고리즘

목록 보기
39/57
post-thumbnail

촌수 계산

풀이

 그래프 탐색, BFS 문제다. 간단하게 start 지점에서 1칸 떨어지면 1촌, 2칸 떨어지면 2촌, 3칸 떨어지면 3촌이다. 예제를 트리 형식으로 표현하면 문제를 파악하는 데 도움이 된다. 트리를 보면 7과 3은 3칸 떨어졌으니 3촌 관계가 된다.

예제 입력 1
9
7 3
7
1 2
1 3
2 7
2 8
2 9
4 5
4 6

from collections import deque
n = int(input())
x,y = map(int, input().split())
m = int(input())
graph = [[] for _ in range(n+1)]
visited = [False for _ in range(n+1)]

for i in range(m):
    a,b = map(int, input().split())
    graph[a].append(b)
    graph[b].append(a)

queue = deque([[x, 1]])
visited[x] = True
while queue:
    s, c = queue.popleft()
    for i in graph[s]:
        if visited[i] == False:
            if i == y:
                print(c)
                exit(0)
            visited[i] = True
            queue.append([i, c+1])
    c += 1
print(-1)

시간복잡도 : O(V+E)

profile
Problem Solving과 기술적 의사결정을 중요시합니다.

0개의 댓글