Algorithm(CodeTree, Python)/DFS

[코드트리] 그래프 탐색 Python

kurooru 2023. 2. 27. 13:14
# n, m 입력
n, m = map(int, input().split())
# graph
graph = [
    [0] * (n+1)
    for _ in range(n+1)
]
# x, y 입력
for _ in range(m):
    x, y = map(int, input().split())
    graph[x][y] = 1
    graph[y][x] = 1

# dfs(vertex)
def dfs(vertex):
    # 전역 변수 선언
    global ans

    for curr_v in range(1, n+1):
        # 이어져 있고, 방문한 적 없으면
        if graph[vertex][curr_v] and not visited[curr_v]:
            # 정답 올려주고
            ans += 1
            # 방문 처리후
            visited[curr_v] = True
            # 재귀호출
            dfs(curr_v)

# 설계
# ans
ans = 0
# visited
visited = [ False for _ in range(n+1) ]
# root_vertex
root_vertex = 1
# 방문 표시
visited[root_vertex] = True
# dfs
dfs(root_vertex)

# 출력
print(ans)