https://www.acmicpc.net/problem/2644
2644번: 촌수계산
사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어
www.acmicpc.net
BFS를 이용해 관계를 탐색하는 문제
부모 - 자식 관계를 arr에 양방향으로 저장한 후
시작 - 끝 관계를 BFS 탐색하며 visit을 1씩 증가시켜준다
루프가 끝났을 때 visit[end]가 0인 경우 알 수 없어 -1을 출력하고,
0이 아닌 경우 시작할 때 본인에 1을 더했으니 visit[end]에 1을 빼서 출력한다
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
start, end = map(int,input().split())
m = int(input())
arr = [[] for _ in range(n+1)]
visit = [0] * (n+1)
for i in range(m):
s, e = map(int,input().split())
arr[s].append(e)
arr[e].append(s)
queue = deque([start])
visit[start] = 1
while queue:
x = queue.popleft()
if x == end:
break
for y in arr[x]:
if visit[y] == 0:
visit[y] = visit[x] + 1
queue.append(y)
if visit[end] == 0:
print(-1)
else:
print(visit[end] - 1)
'백준(BOJ)' 카테고리의 다른 글
[Python/파이썬] - 백준(BOJ) 13904번 : 과제 (0) | 2022.05.11 |
---|---|
[Python/파이썬] - 백준(BOJ) 15683번 : 감시 (0) | 2022.05.11 |
[Java/자바] - 백준(BOJ) 2636번 : 치즈 (0) | 2022.05.11 |
[Python/파이썬] - 백준(BOJ) 21735번 : 눈덩이 굴리기 (0) | 2022.05.08 |
[Python/파이썬] - 백준(BOJ) 21278번 : 호석이 두 마리 치킨 (0) | 2022.05.08 |