<내 코드>
from collections import deque
def bfs(s):
q = deque()
visited = [0 for _ in range(n+1)]
q.append(s)
visited[s] = 1
while q:
x = q.popleft()
for i in tree[x]:
if visited[i] == 0:
visited[i] = 1
result[i] = result[x] + 1
q.append(i)
n = int(input())
a, b = map(int, input().split())
m = int(input())
tree = [[] for _ in range(n+1)]
result = [0 for _ in range(n+1)]
for _ in range(m):
x, y = map(int, input().split())
tree[x].append(y)
tree[y].append(x)
bfs(a)
if result[b] != 0:
print(result[b])
else:
print(-1)
BFS로 그래프를 탐색하며 현재 탐색하는 노드와 연결된 노드에 현재 노드 값의 +1을 한다. 즉, 연결된 노드를 이동하는 것을 의미한다.
이런 식으로 모든 노드들을 탐색을 마치면 찾고자 하는 노드의 인덱스의 값을 출력해주면 된다.
반응형
'알고리즘 문제풀기 > 백준 - Python' 카테고리의 다른 글
[백준 10815] 숫자 카드 - Python (정렬, 이분탐색) (0) | 2020.10.15 |
---|---|
[백준 1449] 수리공 항승 - Python(그리디, 정렬) (0) | 2020.10.08 |
[백준 2263] 트리의 순회 - Python (트리, 재귀) (1) | 2020.10.07 |
[백준 9372] 상근이의 여행 - Python(그래프) (0) | 2020.10.04 |
[백준 1967] 트리의 지름 - Python (트리, DFS) (0) | 2020.10.04 |