[백준] 2644 - 촌수계산

2024. 6. 26. 17:15PS/백준

728x90

문제 링크

https://www.acmicpc.net/problem/2644

느낀 점

이 문제도 아주 기초적인 dfs 구현 문제 하지만, 이것도 뒤로 돌아가는 과정을 없애주면서 진행해주어야해서 그 부분을 신경써주어야함!

import sys
import collections
sys.setrecursionlimit(12345678)

def dfs(startV):
    global visited
    global count
    global final_count
    queue.append(startV)
    visited.append(startV)
    while queue:
        q = queue.popleft()
        for v in graph[q]:
            if v not in visited:
                count += 1
                if v == e:
                    visited.append(v)
                    final_count = count
                    return
                dfs(v)
                count -= 1

graph = collections.defaultdict(list)
queue = collections.deque()
visited = []
count = 0
final_count = 0
n = int(sys.stdin.readline())
s, e = map(int, sys.stdin.readline().split())
m = int(sys.stdin.readline())
for _ in range(m):
    p, c = map(int, sys.stdin.readline().split())
    graph[p].append(c)
    graph[c].append(p)
dfs(s)
if e in visited:
    print(final_count)
else:
    print(-1)

'PS > 백준' 카테고리의 다른 글

[백준] 7795 - 먹을 것인가 먹힐 것인가  (0) 2024.07.01
[백준] 4963 - 섬의 개수  (0) 2024.06.26
[백준] 2606 - 바이러스  (0) 2024.06.26
[백준] 1189 - 컴백홈  (0) 2024.06.26
[백준] 24480 - 깊이 우선 탐색 2  (0) 2024.06.26