728x90
반응형
기본적인 탐색문제로 DFS,BFS알고리즘중 하나를 선택해서 풀면 된다.
나는 DFS를 이용해서 풀었고 DFS알고리즘은 재귀함수를 사용하기 때문에 미리 재귀깊이를 늘려놓는것이 편하다.
dfs함수를 만들어주고 check라는 리스트에 계속해서 숫자를 더하는 방법으로 촌수를 계산해보았다.
# 2644번: 촌수계산
import sys
sys.setrecursionlimit(10*5)
def dfs(node):
for n in graph[node]:
if check[n] == 0:
check[n] = check[node]+1
dfs(n)
n = int(input())
graph = [[] for _ in range(n+1)]
s,e = map(int,input().split())
for _ in range(int(input())):
u,v = map(int,input().split())
graph[u].append(v)
graph[v].append(u)
check = [0] * (n+1)
dfs(s)
print(check[e] if check[e] > 0 else -1)
728x90
반응형
'알고리즘 문제풀이 > DFS & BFS' 카테고리의 다른 글
백준 2251번: 물통 - 파이썬(BFS) (0) | 2022.03.09 |
---|---|
백준 11725번: 트리의 부모 찾기 - 파이썬(DFS) (0) | 2022.03.01 |
백준 2583번: 영역 구하기 - 파이썬(DFS) (0) | 2022.02.27 |
백준 10026번: 적록색약 - 파이썬(DFS) (0) | 2022.02.26 |
백준 파이썬 4963 섬의 개수 - 파이썬(bfs/dfs) (0) | 2022.02.14 |