- DFS 시도 (풀이 1) - 배열을 사용하여 출력하기
n = int(input())
p1, p2 = map(int, input().split())
m = int(input())
result_arr = []
graph = [[] for _ in range(n+1)]
visited = [False]*(n+1)
for _ in range(m):
a,b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
def dfs(start, depth):
visited[start] = True
if start == p2:
result_arr.append(depth)
for i in graph[start]:
if not visited[i]:
dfs(i, depth+1)
dfs(p1, 0)
if len(result_arr) == 0:
print(-1)
else:
print(result_arr[0])
- DFS 시도 (풀이 2) - 변수를 사용하여 출력하기
n = int(input())
p1, p2 = map(int, input().split())
m = int(input())
result_depth = -1
graph = [[] for _ in range(n + 1)]
visited = [False] * (n + 1)
for _ in range(m):
a, b = map(int, input().split())
graph[a].append(b)
graph[b].append(a)
def dfs(start, depth):
global result_depth
visited[start] = True
if start == p2:
result_depth = depth
return
for i in graph[start]:
if not visited[i]:
dfs(i, depth + 1)
dfs(p1, 0)
if result_depth == -1:
print(-1)
else:
print(result_depth)
실행 결과
