반응형
[ Contents ]
1. 문제 (링크 참조)
2644번: 촌수계산
사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어
www.acmicpc.net
2. 문제 풀이
촌수를 계산하는 문제입니다.
2022.02.23 - [Algorithm] - [Algorithm] 너비 우선 탐색(BFS), 가까운 주변부터 찾자
[Algorithm] 너비 우선 탐색(BFS), 가까운 주변부터 찾자
BFS는 가까운 주변부터 탐색하는 알고리즘입니다. 큐를 이용한 BFS 구현방법과 코드를 알아보겠습니다. [ Contents ] 1. BFS(Breath First Search) 너비 우선 탐색(BFS): 가까운 주변 노드부터 탐색하며 점점.
star7sss.tistory.com
가족관계도를 입력받고, 촌수를 계산해야 합니다. 가족도 '부모 - 자식' 간의 관계로, 그래프의 부모 노드 - 자식 노드와 똑같습니다. 부모관계를 입력받아 가족관계 그래프를 저장하고, BFS탐색 또는 DFS탐색으로 촌수를 계산합니다.
3. 코드
from collections import deque
# 입력
n = int(input())
start, end = map(int, input().split())
m = int(input())
graph = [[] for _ in range(n+1)]
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
# bfs 탐색
visited = [False] * (n+1)
queue = deque([(start, 0)])
visited[start] = True
while queue:
x, cnt = queue.popleft()
if x == end:
print(cnt)
break
for i in graph[x]:
if not visited[i]:
queue.append((i, cnt+1))
visited[i] = True
else:
print(-1)
BFS 코드에 대한 설명은 위 링크에서 찾아보실 수 있습니다.
반응형
'Algorithm' 카테고리의 다른 글
[자료구조/스택] 백준 1406 에디터 - 파이썬(Python) (0) | 2022.06.07 |
---|---|
[구현/수학] 백준 2903 중앙 이동 알고리즘 - 파이썬(Python) (0) | 2022.06.06 |
[구현/수학] 백준 2921 도미노 - 파이썬(Python) (0) | 2022.06.04 |
[구현/수학] 백준 11966 2의 제곱인가? - 파이썬(Python) (0) | 2022.06.03 |
[DP/동적계획법] 백준 1904 01타일 - 파이썬(Python) (0) | 2022.06.02 |
댓글