https://www.acmicpc.net/problem/2644
1. 내가 작성한 코드
from collections import deque
def bfs():
queue = deque()
queue.append(a)
visit[a] = 0
while queue:
x = queue.popleft()
if x == b:
return visit[x]
else:
for i in graph[x]:
if visit[i] == 0:
visit[i] = visit[x]+1
queue.append(i)
total = int(input()) #전체 사람 수
a,b = map(int, input().split())
family = int(input()) #부모 가족 수
graph = [[] for i in range(total + 1)]
visit = [0] * (total+1)
for i in range(family):
c,d = map(int, input().split())
graph[c].append(d)
graph[d].append(c)
bfs()
if visit[b] == 0:
print(-1)
else:
print(visit[b])
BFS, DFS 모두 풀 수 있는 문제이다.
양방향 그래프라고 생각하고 문제를 해결하면 된다.
'🔅코딩테스트 공부🔅 > ❗백준' 카테고리의 다른 글
[백준] 7576번 토마토 (python) (0) | 2023.02.12 |
---|---|
[백준] 1931번 회의실 배정(python) (0) | 2023.02.11 |
[백준] 1946번 신입 사원(python) (0) | 2023.02.11 |
[백준] 7562번 나이트의 이동(python) (0) | 2023.02.10 |
[백준] 24416번 알고리즘 수업 - 피보나치 수 1(python) (0) | 2023.02.09 |
댓글