DFS - 바이러스[2606번]

2022. 4. 9. 00:002022/BaekJoon_알고리즘

def dfs(i):
    for idx in range(1, len(graph[i])):
        if graph[i][idx] == 1 and idx not in visited:
            visited.append(idx)
            dfs(idx)

n = int(input())
m = int(input())
graph = [[0]*(n+1) for _ in range(n+1)]
for _ in range(m):
    a, b = map(int, input().split())
    graph[a][b] = 1
    graph[b][a] = 1
    
visited = [1]
dfs(1)
print(len(visited)-1)

해당 문제는 DFS 문제로 회귀함수를 이용해 1번을 시작으로 연결된 컴퓨터들을 visited로 기록함으로써 구할 수 있다.

-> 1번과 직/간접적으로 연결된 컴퓨터의 개수만 구하면 되므로 visited로 연결된 컴퓨터들을 체크하면서 구하면 됨