https://www.acmicpc.net/problem/2644
2644번: 촌수계산
사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어
www.acmicpc.net
BFS로 풀었고 오랜만에 BFS로 풀어서 그런지 코드를 구현하는데 좀 오래 걸렸다
앞으로 알고리즘 문제를 자주 풀어야겠다!!!!
코드
import sys
from collections import deque
input = sys.stdin.readline
def bfs(start, final):
queue = deque()
queue.append(start)
while queue:
x = queue.popleft()
for i in graph[x]:
if visited[i] == 0:
visited[i] = visited[x]+1
queue.append(i)
if i == final:
return
else:
continue
n = int(input())
x, y = map(int, input().split())
edge = int(input())
graph = [[] for _ in range(n+1)]
visited = [0 for _ in range(n+1)]
for i in range(edge):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
bfs(x, y)
if visited[y] == 0:
print(-1)
else:
print(visited[y])
'Algorithm > 알고리즘 문제' 카테고리의 다른 글
[백준/BOJ][Python] 9095번 1, 2, 3 더하기 (1) | 2023.10.02 |
---|---|
[백준/BOJ][Python] 1463번 1로 만들기 (1) | 2023.10.02 |
[백준/BOJ] 2606번 바이러스 (0) | 2023.09.18 |
[프로그래머스] Level2. 전력망을 둘로 나누기 (0) | 2023.09.18 |
[백준/BOJ] 백트래킹 N과 M시리즈(1)~(8) (1) | 2023.09.11 |