Algorithm Study/이론

[알고리즘] DFS 구현

728x90
반응형
# V개의 노드, E개의 간선이 주어질 때
V, E = map(int, input().split())
graph = [[] for i in range(V+1)]

# 그래프 구성
for e in range(E):
    u, v = map(int, input().split())
    graph[u].append(v)	# 단방향일 때
   #graph[v].append(u)	# 양방향일 때
   
# 방문 정보를 저장할 공간
visited = [0] * (V+1)	# 인덱스 에러(혼동)을 방지하기 위해 V+1만큼 메모리 생성

# DFS 함수 구성
def dfs(v):
    # 해당 정점을 방문
    visited[v] = 1; # print(v, end=" ");  # 방문 정보가 궁금할 때 확인 가능
    
    # v의 방문하지 않은 인접 정점을 탐색
    for w in graph:
    	if visited[w] == 0:
            dfs(w)