반응형
생각이 꼬여서 푸는 데 좀 걸렸다ㅜㅜ
from collections import deque
n = int(input())
a, b = map(int, input().split())
m = int(input())
matrix = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
for _ in range(m):
x, y = map(int, input().split())
matrix[x].append(y)
matrix[y].append(x)
def bfs(v, target):
count = 0
q = deque([[v, count]])
while q:
value = q.popleft()
v = value[0]
count = value[1]
if v == target:
return count
if not visited[v]:
count += 1
visited[v] = True
for i in matrix[v]:
if not visited[i]:
q.append([i, count])
return -1
print(bfs(a, b))
내가 생각하는 코드의 핵심!↓
if not visited[v]:
count += 1
visited[v] = True
for i in matrix[v]:
if not visited[i]:
q.append([i, count])
이 부분에서 count+=1 이 코드를 맨 아래에다가 넣었는데 이럼 안된다
연결 되어 있는 부분 전부다 계산하기 때문!
반응형
'알고리즘 > dfs,bfs' 카테고리의 다른 글
[파이썬🐍] 백준 7576 : 토마토 (0) | 2021.05.29 |
---|---|
[파이썬🐍] 백준 4963 : 섬의 개수 (0) | 2021.04.12 |
[파이썬🐍] 백준 10026 : 적록색약 (0) | 2021.04.10 |
[파이썬🐍] 백준 2583 : 영역 구하기 (0) | 2021.04.09 |
[파이썬🐍] 백준 11724 : 연결 요소의 개수 (0) | 2021.04.08 |
댓글